Package javax.faces.component

Examples of javax.faces.component.UIViewRoot


    {
        ResponseStateManager manager;
        Object state[];
        Map<String, Object> states;
       
        UIViewRoot view = null;

        // Get previous state from ResponseStateManager.
        manager = RendererUtils.getResponseStateManager (context, renderKitId);

        if (context.getApplication().getStateManager().isSavingStateInClient(context))
        {
            state = (Object[]) manager.getState (context, viewId);
        }
        else
        {
            Integer serverStateId = helper.getServerStateId((Object[]) manager.getState(context, viewId));

            state = (Object[]) helper.getSerializedViewFromServletSession(context, viewId, serverStateId);
        }
       
        if (state != null && state[1] instanceof Object[])
        {
            Object[] fullState = (Object[]) state[1];
            view = (UIViewRoot) internalRestoreTreeStructure((TreeStructComponent)fullState[0]);

            if (view != null) {
                context.setViewRoot (view);
                view.processRestoreState(context, fullState[1]);
            }
        }
        else
        {
            // Per the spec: build the view.
           
            try {
                ViewMetadata metadata = vdl.getViewMetadata (context, viewId);
               
                Collection<UIViewParameter> viewParameters = null;
               
                if (metadata != null)
                {
                    view = metadata.createMetadataView(context);
                   
                    if (view != null)
                    {
                        viewParameters = metadata.getViewParameters(view);
                    }
                }
                if (view == null)
                {
                    view = vdl.createView(context, viewId);
                }
               
                context.setViewRoot (view);
               
                // TODO: Why is necessary enable event processing?
                // ANS: On RestoreViewExecutor, setProcessingEvents is called first to false
                // and then to true when postback. Since we need listeners registered to PostAddToViewEvent
                // event to be handled, we should enable it again. We are waiting a response from EG about
                // the behavior of those listeners, because for partial state saving we need this listeners
                // be called from here and relocate components properly, but for now we have to let this code as is.
                try
                {
                    context.setProcessingEvents (true);
                    vdl.buildView (context, view);
                    // In the latest code related to PostAddToView, it is
                    // triggered no matter if it is applied on postback. It seems that MYFACES-2389,
                    // TRINIDAD-1670 and TRINIDAD-1671 are related.
                    // This code is no longer necessary, but better let it here.
                    //_publishPostBuildComponentTreeOnRestoreViewEvent(context, view);
                    suscribeListeners(view);
                }
                finally
                {
                    context.setProcessingEvents (false);
                }
            }
            catch (Throwable e) {
                throw new FacesException ("unable to create view \"" + viewId + "\"", e);
            }

            if (state != null && state[1] != null)
            {
                states = (Map<String, Object>) state[1];
               
                // Visit the children and restore their state.
               
                //view.visitTree (VisitContext.createVisitContext (context), new RestoreStateVisitor (states));
               
                //Restore state of current components
                restoreStateFromMap(context, states, view);
               
                // TODO: handle dynamic add/removes as mandated by the spec.  Not sure how to do handle this yet.
                List<String> clientIdsRemoved = getClientIdsRemoved(view);
               
                if (clientIdsRemoved != null)
                {
                    for (String clientId : clientIdsRemoved)
                    {
                        view.invokeOnComponent(context, clientId, new ContextCallback()
                            {
                                public void invokeContextCallback(FacesContext context,
                                        UIComponent target)
                                {
                                    if (target.getParent() != null)
                                    {
                                        target.getParent().getChildren().remove(target);
                                    }
                                }
                            });
                    }
                }
               
                List<String> clientIdsAdded = getClientIdsAdded(view);
                if (clientIdsAdded != null)
                {
                    for (String clientId : clientIdsAdded)
                    {
                        final AttachedFullStateWrapper wrapper = (AttachedFullStateWrapper) states.get(clientId);
                        if (wrapper != null)
                        {
                            final Object[] addedState = (Object[]) wrapper.getWrappedStateObject();
                            if (addedState != null)
                            {
                                if (addedState.length == 2)
                                {
                                    view = (UIViewRoot) internalRestoreTreeStructure((TreeStructComponent) addedState[0]);
                                    view.processRestoreState(context, addedState[1]);
                                    break;
                                }
                                else
                                {
                                    final String parentClientId = (String) addedState[0];
                                    view.invokeOnComponent(context, parentClientId, new ContextCallback()
                                    {
                                        public void invokeContextCallback(FacesContext context,
                                                UIComponent target)
                                        {
                                            if (addedState[1] != null)
                                            {
                                                String facetName = (String) addedState[1];
                                                UIComponent child = internalRestoreTreeStructure((TreeStructComponent) addedState[3]);
                                                child.processRestoreState(context, addedState[4]);
                                                target.getFacets().put(facetName,child);
                                            }
                                            else
                                            {
                                                Integer childIndex = (Integer) addedState[2];
                                                UIComponent child = internalRestoreTreeStructure((TreeStructComponent) addedState[3]);
                                                child.processRestoreState(context, addedState[4]);
                                                try
                                                {
                                                    target.getChildren().add(childIndex, child);
                                                }
                                                catch (IndexOutOfBoundsException e)
                                                {
                                                    // We can't be sure about where should be this
                                                    // item, so just add it.
                                                    target.getChildren().add(child);
                                                }
                                            }
                                        }
                                    });
                                }
                            }
                        }
                    }
                }
            }
        }
       
        // Restore binding, because UIViewRoot.processRestoreState() is never called
        //boolean oldContextEventState = context.isProcessingEvents();
        //the event processing has to be enabled because of the restore view event triggers
        //TODO ask the EG the this is a spec violation if we do it that way
        //see Section 2.2.1

        //context.setProcessingEvents(true);
        //try {
            view.visitTree(VisitContext.createVisitContext(context), new RestoreStateCallback());
        //} finally {
        //    context.setProcessingEvents(oldContextEventState);
        //}
        return view;
    }
View Full Code Here


    }*/

    @Override
    public Object saveView (FacesContext context)
    {
        UIViewRoot view = context.getViewRoot();
        Object states;
       
        if (view == null) {
            // Not much that can be done.
           
            return null;
        }
       
        if (view.isTransient()) {
            // Must return null immediately per spec.
           
            return null;
        }
       
        ExternalContext externalContext = context.getExternalContext();
       
        Object serializedView = externalContext.getRequestMap()
            .get(DefaultFaceletsStateManagementHelper.SERIALIZED_VIEW_REQUEST_ATTR);
       
        //Note on ajax case the method saveState could be called twice: once before start
        //document rendering and the other one when it is called StateManager.getViewState method.
        if (serializedView == null)
        {
                   
            // Make sure the client IDs are unique per the spec.
           
            checkIds (context, view, new HashSet<String>());
           
            // Create save state objects for every component.
           
            //view.visitTree (VisitContext.createVisitContext (context), new SaveStateVisitor (states));
           
            if (view.getAttributes().containsKey(COMPONENT_ADDED_AFTER_BUILD_VIEW))
            {
                ensureClearInitialState(view);
                states = new Object[]{
                            internalBuildTreeStructureToSave(view),
                            view.processSaveState(context)};
            }
            else
            {
                states = new HashMap<String, Object>();

View Full Code Here

    }
   
    @SuppressWarnings("unchecked")
    private void registerOnAddRemoveList(String clientId)
    {
        UIViewRoot uiViewRoot = FacesContext.getCurrentInstance().getViewRoot();

        List<String> clientIdsAdded = (List<String>) getClientIdsAdded(uiViewRoot);
        if (clientIdsAdded == null)
        {
            //Create a set that preserve insertion order
View Full Code Here

    }
   
    @SuppressWarnings("unchecked")
    private void registerOnAddList(String clientId)
    {
        UIViewRoot uiViewRoot = FacesContext.getCurrentInstance().getViewRoot();

        List<String> clientIdsAdded = (List<String>) getClientIdsAdded(uiViewRoot);
        if (clientIdsAdded == null)
        {
            //Create a set that preserve insertion order
View Full Code Here

                component.getAttributes().put(COMPONENT_ADDED_AFTER_BUILD_VIEW, ComponentState.ADD);
            }
            else
            {
                //PreRemoveFromViewEvent
                UIViewRoot uiViewRoot = facesContext.getViewRoot();
               
                List<String> clientIdsRemoved = getClientIdsRemoved(uiViewRoot);
                if (clientIdsRemoved == null)
                {
                    //Create a set that preserve insertion order
View Full Code Here

    public UIViewRoot restoreView(FacesContext context, String viewId)
    {
        if (UIDebug.debugRequest(context))
        {
            return new UIViewRoot();
        }

        if (!this.buildBeforeRestore || !handledByFacelets(viewId))
        {
            return this.parent.restoreView(context, viewId);
        }

        if (this.faceletFactory == null)
        {
            this.initialize(context);
        }

        // In JSF 1.2, restoreView() will only be called on postback.
        // But in JSF 1.1, it will be called for an initial request too,
        // in which case we must return null in order to fall through
        // to createView()

        ViewHandler outerViewHandler = context.getApplication().getViewHandler();
        String renderKitId = outerViewHandler.calculateRenderKitId(context);

        UIViewRoot viewRoot = createView(context, viewId);
        context.setViewRoot(viewRoot);
        try
        {
            this.buildView(context, viewRoot);
        }
View Full Code Here

    }

    protected void handleRenderException(FacesContext context, Exception e)
            throws IOException, ELException, FacesException
    {
        UIViewRoot root = context.getViewRoot();
        StringBuffer sb = new StringBuffer(64);
        sb.append("Error Rendering View");
        if (root != null)
        {
            sb.append('[');
            sb.append(root.getViewId());
            sb.append(']');
        }
       
        log.log(Level.SEVERE, sb.toString(), e);
       
View Full Code Here

    public UIViewRoot createView(FacesContext context, String viewId)
    {
        if (UIDebug.debugRequest(context))
        {
            return new UIViewRoot();
        }
        return this.parent.createView(context, viewId);
    }
View Full Code Here

                handler.handleNavigation(context, fromAction, outcome);
                //propagate previously calculated submit parameters
                context.getViewRoot().getViewMap().put(DeltaSubmitPhaseListener.PreviousParameters, idToPreviousParametersMapping);
            }
            */
            UIViewRoot viewRoot = context.getViewRoot();
            Map<String, Object> viewMap = viewRoot.getViewMap();
            Map<String, String> paramsMap = getActionParameterMap(outcome);
            if (paramsMap!=null)
            {
                log.debug("Setting FORWARD_PAGE_PARAMS for outcome {}.", outcome);
                viewMap.put(PagePhaseListener.FORWARD_PAGE_PARAMS, paramsMap);
View Full Code Here

        PhaseId phaseId = pe.getPhaseId();
        if (log.isTraceEnabled())
            log.trace("Processing Phase {}.", phaseId);

        FacesContext fc = pe.getFacesContext();
        UIViewRoot vr = fc.getViewRoot();
        if (vr == null)
        {
            /*
            PartialViewContext pvc = fc.getPartialViewContext();
            boolean ajax = pvc.isAjaxRequest();
            boolean part = pvc.isPartialRequest();
            if (!part && !ajax)
            {
                HttpServletRequest req = FacesUtils.getHttpRequest(fc);
                String reqURI = req.getRequestURI();
                log.info("No View Root for request to '"+reqURI+"' in Phase "+String.valueOf(phaseId));
            }
            */
            return;
        }

        // Get the view Id
        String viewId = vr.getViewId();
        if (viewId==null)
        {   // Error: No viewId!
            log.warn("No viewId provided for PagePhaseEvent in phase {}.", phaseId);
            return;
        }
       
        // Detect view change
        Map<String, Object> sessionMap = fc.getExternalContext().getSessionMap();
        Object lastViewId = sessionMap.get(LAST_PAGE_VIEW_ID);
        if (lastViewId == null || !(((String) lastViewId).equalsIgnoreCase(viewId)))
        { // view changes
            FacesUtils.getFacesApplication().onChangeView(fc, viewId);
            if (fc.getResponseComplete())
                return;
            // set view Id
            sessionMap.put(LAST_PAGE_VIEW_ID, viewId);
        }

        // Get Page Definition
        PageDefinition pageDef = PageDefinitions.getInstance().getPageFromViewId(viewId);
        if (pageDef == null)
        {   // No page definition available
            if (log.isDebugEnabled())
                log.debug("No page definition available for viewId {}.", viewId);
            return;
        }   

        // Check Request context path
        /*
        if (viewChanged)
        {
            log.debug("Checking view context path");
            HttpServletRequest req = FacesUtils.getHttpRequest(fc);
            String reqURI = req.getRequestURI();
            viewId = pageDef.getPath();
            int vix = viewId.lastIndexOf('.');
            int rix = reqURI.lastIndexOf('.');
            if (rix<vix || !viewId.regionMatches(true, 0, reqURI, rix-vix, vix))
            {   // redirect to view page
                String ctxPath = fc.getExternalContext().getRequestContextPath();
                String pageURI = ctxPath + viewId.substring(0,vix) + ".iface";
                log.warn("Invalid RequestURI '" + reqURI + "'. Redirecting to '"+pageURI+"'.");
                FacesUtils.redirectDirectly(fc, pageURI);
                return;
            }
            // Save current viewId
        }
        */
       
        // Obtain PageBean from BeanManager
        String name = pageDef.getPageBeanName();
        Map<String, Object> viewMap = vr.getViewMap();
        Page pageBean = (Page) viewMap.get(name);
        if (pageBean == null)
        {   // Not available yet
            Class<? extends Page> pageClass = pageDef.getPageBeanClass();
            if (log.isDebugEnabled())
View Full Code Here

TOP

Related Classes of javax.faces.component.UIViewRoot

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.