Package javax.faces.application

Examples of javax.faces.application.StateManager


            ResponseWriter writer = origWriter.cloneWithWriter(stateWriter);
            context.setResponseWriter(writer);

            // force creation of session if saving state there
            StateManager stateMgr = context.getApplication().getStateManager();
            if (!stateMgr.isSavingStateInClient(context)) {
                context.getExternalContext().getSession(true);
            }

            long time = System.currentTimeMillis();

            // render the view to the response
            writer.startDocument();
            if (FacesAPI.getVersion() >= 12) {
                viewToRender.encodeAll(context);
            } else {
                ComponentSupport.encodeRecursive(context, viewToRender);
            }
            writer.endDocument();

            // finish writing
            writer.close();

            // remove transients for older versions
            if (FacesAPI.getVersion() < 12) {
                ComponentSupport.removeTransient(viewToRender);
            }

            boolean writtenState = stateWriter.isStateWritten();
            // flush to origWriter
            if (writtenState) {
                String content = stateWriter.getAndResetBuffer();
                int end = content.indexOf(STATE_KEY);
                // See if we can find any trace of the saved state.
                // If so, we need to perform token replacement
                if (end >= 0) {
                    // save state
                    Object stateObj = stateMgr.saveSerializedView(context);
                    String stateStr;
                    if (stateObj == null) {
                        stateStr = null;
                    } else {
                        stateMgr.writeState(context,
                                       (StateManager.SerializedView) stateObj);
                        stateStr = stateWriter.getAndResetBuffer();
                    }

                    int start = 0;

                    while (end != -1) {
                        origWriter.write(content, start, end - start);
                        if (stateStr != null) {
                            origWriter.write(stateStr);
                        }
                        start = end + STATE_KEY_LEN;
                        end = content.indexOf(STATE_KEY, start);
                    }
                    origWriter.write(content, start, content.length() - start);
                // No trace of any saved state, so we just need to flush
                // the buffer
                } else {
                    origWriter.write(content);
                    // But for JSF 1.1 (actually, just 1.1_01 RI), if we didn't
                    // detect any saved state, force a call to
                    // saveSerializedView() in case we're using the old
                    // pure-server-side state saving
                    if ((FacesAPI.getVersion() < 12)
                        && !stateMgr.isSavingStateInClient(context)) {
                        stateMgr.saveSerializedView(context);
                    }
                }
            }

            time = System.currentTimeMillis() - time;
View Full Code Here


  }
  else {
            if (state instanceof Object[]) {
                Object[] stateArray = (Object[])state;
                if (2 == stateArray.length) {
              StateManager stateManager =
            context.getApplication().getStateManager();
              view = stateManager.new SerializedView(stateArray[0],
                        stateArray[1]);
                } else {
                    //PENDING - I18N
View Full Code Here

  }
  else {
            if (state instanceof Object[]) {
                Object[] stateArray = (Object[])state;
                if (2 == stateArray.length) {
              StateManager stateManager =
            context.getApplication().getStateManager();
              view = stateManager.new SerializedView(stateArray[0],
                        stateArray[1]);
                } else {
                    //PENDING - I18N
View Full Code Here

        ResponseStateManager responseStateManager = context.getRenderKit().getResponseStateManager();
       
        setWritingState(context, responseStateManager);

        StateManager stateManager = context.getApplication().getStateManager();
       
        // By the spec, it is necessary to use a writer to write FORM_STATE_MARKER,
        // after the view is rendered, to preserve changes done on the component tree
        // on rendering time. But if server side state saving is used, this is not
        // really necessary, because a token could be used and after the view is
        // rendered, a simple call to StateManager.saveState() could do the trick.
        // The code below check if we are using MyFacesResponseStateManager and if
        // that so, check if the current one support the trick.
        if (StateCacheUtils.isMyFacesResponseStateManager(responseStateManager))
        {
            if (StateCacheUtils.getMyFacesResponseStateManager(responseStateManager).isWriteStateAfterRenderViewRequired(context))
            {
                // Only write state marker if javascript view state is disabled
                ExternalContext extContext = context.getExternalContext();
                if (!(JavascriptUtils.isJavascriptAllowed(extContext) && MyfacesConfig.getCurrentInstance(extContext).isViewStateJavascript())) {
                    context.getResponseWriter().write(FORM_STATE_MARKER);
                }
            }
            else
            {
                stateManager.writeState(context, new Object[2]);
            }
        }
        else
        {
            // Only write state marker if javascript view state is disabled
View Full Code Here

    }

    @Test
    public void testWriteAndRestoreState() throws Exception
    {
        StateManager stateManager = null;
        String viewStateParam = null;
       
        //renderKit.setResponseStateManager(new HtmlResponseStateManager());
        //StateUtils.initSecret(servletContext);
        //servletContext.setAttribute(StateUtils.SERIAL_FACTORY, new DefaultSerialFactory());
        servletContext.addInitParameter(StateManager.STATE_SAVING_METHOD_PARAM_NAME, StateManager.STATE_SAVING_METHOD_CLIENT);
       
        try
        {
            setupRequest();
           
            facesContext.setResponseWriter(new MockResponseWriter(new BufferedWriter(new CharArrayWriter()), null, null));
   
            UIViewRoot viewRoot = facesContext.getViewRoot();
            viewRoot.setViewId("/root");
            stateManager = new StateManagerImpl();
   
            UIOutput output = new UIOutput();
            output.setValue("foo");
            output.setId("foo");
   
            stateManager.writeState(facesContext, stateManager.saveView(facesContext));
           
            viewStateParam = stateManager.getViewState(facesContext);
        }
        finally
        {
            tearDownRequest();
        }

        try
        {
            setupRequest();
           
            request.addParameter(ResponseStateManager.VIEW_STATE_PARAM, viewStateParam);
   
            UIViewRoot restoredViewRoot = stateManager.restoreView(facesContext, "/root", RenderKitFactory.HTML_BASIC_RENDER_KIT);
           
            Assert.assertNotNull(restoredViewRoot);
        }
        finally
        {
View Full Code Here

    }

    @Test
    public void testWriteAndRestoreStateWithMyFacesRSM() throws Exception
    {
        StateManager stateManager = null;
        String viewStateParam = null;
       
        ((MockRenderKit)renderKit).setResponseStateManager(new HtmlResponseStateManager());
        StateUtils.initSecret(servletContext);
        servletContext.setAttribute(StateUtils.SERIAL_FACTORY, new DefaultSerialFactory());
       
        try
        {
            setupRequest();
           
            facesContext.setResponseWriter(new MockResponseWriter(new BufferedWriter(new CharArrayWriter()), null, null));
   
            UIViewRoot viewRoot = facesContext.getViewRoot();
            viewRoot.setViewId("/root");
            stateManager = new StateManagerImpl();
   
            UIOutput output = new UIOutput();
            output.setValue("foo");
            output.setId("foo");
   
            stateManager.writeState(facesContext, stateManager.saveView(facesContext));
           
            viewStateParam = stateManager.getViewState(facesContext);
        }
        finally
        {
            tearDownRequest();
        }

        try
        {
            setupRequest();
           
            request.addParameter(ResponseStateManager.VIEW_STATE_PARAM, viewStateParam);
   
            UIViewRoot restoredViewRoot = stateManager.restoreView(facesContext, "/root", RenderKitFactory.HTML_BASIC_RENDER_KIT);
           
            Assert.assertNotNull(restoredViewRoot);
        }
        finally
        {
View Full Code Here

            addChildParametersToHref(component, hrefBuf,
                                     false, //not the first url parameter
                                     writer.getCharacterEncoding());
        }

        StateManager stateManager = facesContext.getApplication().getStateManager();
        hrefBuf.append("&");
        if (stateManager.isSavingStateInClient(facesContext)) {
            hrefBuf.append(URL_STATE_MARKER);
        }
        String href = facesContext.getExternalContext().encodeActionURL(hrefBuf.toString());
        writer.startElement(HTML.ANCHOR_ELEM, component);
        writer.writeURIAttribute(HTML.HREF_ATTR,
View Full Code Here

        {
            BodyContent bodyContent = getBodyContent();
            if (bodyContent != null)
            {
                FacesContext facesContext = FacesContext.getCurrentInstance();
                StateManager stateManager = facesContext.getApplication().getStateManager();
                StateManager.SerializedView serializedView
                        = stateManager.saveSerializedView(facesContext);

                //until now we have written to a buffer
                ResponseWriter bufferWriter = facesContext.getResponseWriter();
                bufferWriter.flush();
                //now we switch to real output
                ResponseWriter realWriter = bufferWriter.cloneWithWriter(getPreviousOut());
                facesContext.setResponseWriter(realWriter);

                String bodyStr = bodyContent.getString();
              /*
                do this always - even with server-side-state saving
                if ( stateManager.isSavingStateInClient(facesContext) )
                { */

                int form_marker = bodyStr.indexOf(JspViewHandlerImpl.FORM_STATE_MARKER);
                int url_marker = bodyStr.indexOf(HtmlLinkRendererBase.URL_STATE_MARKER);
                int lastMarkerEnd = 0;
                while (form_marker != -1 || url_marker != -1)
                {
                    if (url_marker == -1 || (form_marker != -1 && form_marker < url_marker))
                    {
                        //replace form_marker
                        realWriter.write(bodyStr, lastMarkerEnd, form_marker - lastMarkerEnd);
                        stateManager.writeState(facesContext, serializedView);
                        lastMarkerEnd = form_marker + JspViewHandlerImpl.FORM_STATE_MARKER_LEN;
                        form_marker = bodyStr.indexOf(JspViewHandlerImpl.FORM_STATE_MARKER, lastMarkerEnd);
                    }
                    else
                    {
View Full Code Here

        writer.writeURIAttribute(org.apache.myfaces.shared_tomahawk.renderkit.html.HTML.ACTION_ATTR,
                                 facesContext.getExternalContext().encodeActionURL(actionURL),
                                 null);
        writer.flush();

        StateManager stateManager = facesContext.getApplication().getStateManager();
        org.apache.myfaces.shared_tomahawk.renderkit.html.HtmlRendererUtils.writePrettyLineSeparator(facesContext);

        //TODO: Optimize saveSerializedView call, because serialized view is built twice!
        StateManager.SerializedView serializedView = stateManager.saveSerializedView(facesContext);
        // Adam Winer - TOMAHAWK-253: Ideally, this code should be refactored so that the server-side code is also calling StateManager.writeState() too
        //    it's a significant problem that DummyFormUtils has hardcoded knowledge of how the StateManager works.
        if (stateManager.isSavingStateInClient(facesContext)) {
            //render state parameters
            stateManager.writeState(facesContext, serializedView);
        }

        if (org.apache.myfaces.shared_tomahawk.config.MyfacesConfig.getCurrentInstance(facesContext.getExternalContext()).isAutoScroll())
        {
            HtmlRendererUtils.renderAutoScrollHiddenInput(facesContext, writer);
View Full Code Here

            addChildParametersToHref(component, hrefBuf,
                                     false, //not the first url parameter
                                     writer.getCharacterEncoding());
        }

        StateManager stateManager = facesContext.getApplication().getStateManager();
        hrefBuf.append("&");
        if (stateManager.isSavingStateInClient(facesContext)) {
            hrefBuf.append(URL_STATE_MARKER);
        }
        String href = facesContext.getExternalContext().encodeActionURL(hrefBuf.toString());
        writer.startElement(HTML.ANCHOR_ELEM, component);
        writer.writeURIAttribute(HTML.HREF_ATTR,
View Full Code Here

TOP

Related Classes of javax.faces.application.StateManager

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.