Package com.liferay.faces.util.application

Examples of com.liferay.faces.util.application.ComponentResource


        // Determine whether or not the resource is already present in the <head> section of the portal page.
        // Note that this can happen in one of two ways: 1) If this is NON-Liferay-Runtime portlet (currently
        // doing Ajax) but has already added the resource during initial page HTTP-GET render, or 2) By another
        // NON-Liferay-Runtime portlet that has already added the same JavaScript resource.
        ComponentResource componentResource = componentResourceFactory.getComponentResource(
            uiComponentResource);
        boolean alreadyPresentInPortalPageHead = headResourceIdsFromManagedBean.contains(
            componentResource.getId());

        // If the resource is already present in the <head> section of the portal page, then simply output a
        // logger message to this fact.
        if (alreadyPresentInPortalPageHead) {

          if (logger.isDebugEnabled()) {

            logger.debug(
              "Resource already present in head: name=[{0}] library=[{1}] rendererType=[{2}] value=[{3}] className=[{4}]",
              new Object[] {
                componentResource.getName(), componentResource.getLibrary(),
                uiComponentResource.getRendererType(),
                ComponentResourceUtil.getComponentValue(uiComponentResource),
                uiComponentResource.getClass().getName(),
              });
          }
        }

        // Otherwise, since it is not possible to add it to the <head> section, the resource must be relocated
        // to the body.
        else {
          logger.debug(
            "Relocating resource to body (since it was added via Ajax and is not yet present in head): name=[{0}] library=[{1}] rendererType=[{2}] value=[{3}] className=[{4}]",
            new Object[] {
              componentResource.getName(), componentResource.getLibrary(),
              uiComponentResource.getRendererType(),
              ComponentResourceUtil.getComponentValue(uiComponentResource),
              uiComponentResource.getClass().getName(),
            });

          resourcesForRelocatingToBody.add(uiComponentResource);
        }
      }

      // Otherwise, if the portlet container has the ability to add resources to the <head> section of the
      // portal page, then add it to the list of resources that are to be added to the <head> section.
      else if (portletContainerAbleToAddScriptResourceToHead) {
        resourcesForAddingToHead.add(uiComponentResource);
      }

      // Otherwise, we have no choice but to add it to the list of resources that are to be relocated to
      // the body.
      else {
        resourcesForRelocatingToBody.add(uiComponentResource);
      }
    }

    // If the portlet container has the ability to add resources to the <head> section of the portal page, then
    if (portletContainerAbleToAddScriptResourceToHead) {

      // Save a temporary reference to the ResponseWriter provided by the FacesContext.
      ResponseWriter responseWriterBackup = facesContext.getResponseWriter();

      // Replace the ResponseWriter in the FacesContext with a HeadResponseWriter that knows how to write to
      // the <head>...</head> section of the rendered portal page.
      HeadResponseWriter headResponseWriter = (HeadResponseWriter) portletRequest.getAttribute(
          HeadResponseWriter.class.getName());

      if (headResponseWriter == null) {
        headResponseWriter = (HeadResponseWriter) portletContainer.getHeadResponseWriter(responseWriterBackup);
      }

      portletRequest.setAttribute(HeadResponseWriter.class.getName(), headResponseWriter);
      facesContext.setResponseWriter(headResponseWriter);

      // For each resource:
      for (UIComponent uiComponentResource : resourcesForAddingToHead) {

        ComponentResource componentResource = componentResourceFactory.getComponentResource(
            uiComponentResource);

        // Command the resource to render itself to the HeadResponseWriter
        if (componentResource.isRenderable()) {
          uiComponentResource.encodeAll(facesContext);
        }

        String resourceId = componentResource.getId();

        // If the resource has not yet been marked as having been added, then mark it now. Note that unless the
        // resource is a RichFaces Resource Library (see comments below), the resource has probably already been
        // marked as being in the head by ResourceRendererBridgeImpl#encodeEnd(FacesContext, UIComponent).
        if (!headResourceIdsFromManagedBean.contains(resourceId)) {

          headResourceIdsFromManagedBean.add(resourceId);

          if (logger.isDebugEnabled()) {

            if (resourceId.endsWith(RICHFACES_RESLIB_SUFFIX) ||
                RENDERER_TYPE_RICHFACES_RESOURCE_LIBRARY.equals(
                  uiComponentResource.getRendererType())) {

              // RichFaces has resources like "org.richfaces:base-component.reslib",
              // "org.richfaces:message.reslib", and "org.richfaces:ajax.reslib" that represent a
              // collection of resources.
              logger.debug("Marking RichFaces resource library [{0}] as being present in the head",
                resourceId);
            }
            else {
              logger.debug("Marking non-RichFaces resourceId=[{0}] as being present in the head",
                resourceId);
            }
          }
        }

      }

      // Restore the temporary ResponseWriter reference.
      facesContext.setResponseWriter(responseWriterBackup);
    }

    // Relocate resources to the body if necessary. Note that the "ADDED" attribute has to be set to true
    // in order to prevent events from firing during the relocation process.
    for (UIComponent uiComponentResource : resourcesForRelocatingToBody) {

      uiComponentResource.getAttributes().put(ORIGINAL_TARGET, StringPool.HEAD);
      uiComponentResource.getAttributes().put(ADDED, Boolean.TRUE);
      uiViewRoot.addComponentResource(facesContext, uiComponentResource, StringPool.BODY);

      if (logger.isDebugEnabled()) {
        ComponentResource componentResource = componentResourceFactory.getComponentResource(
            uiComponentResource);

        logger.debug(
          "Relocating resource to body: name=[{0}] library=[{1}] rendererType=[{2}] value=[{3}] className=[{4}]",
          new Object[] {
            componentResource.getName(), componentResource.getLibrary(),
            uiComponentResource.getRendererType(),
            ComponentResourceUtil.getComponentValue(uiComponentResource),
            uiComponentResource.getClass().getName(),
          });
      }
View Full Code Here


        String originalTarget = (String) uiComponentResource.getAttributes().get(ORIGINAL_TARGET);

        if (StringPool.HEAD.equals(originalTarget)) {

          ComponentResource componentResource = componentResourceFactory.getComponentResource(
              uiComponentResource);

          if (componentResource.isRenderable()) {
            uiComponentResource.encodeAll(facesContext);

            if (logger.isDebugEnabled()) {

              if (logger.isDebugEnabled()) {

                logger.debug(
                  "Rendering resource just after opening liferay-faces-bridge-body <div> name=[{0}] library=[{1}] rendererType=[{2}] value=[{3}] className=[{4}]",
                  new Object[] {
                    componentResource.getName(), componentResource.getLibrary(),
                    uiComponentResource.getRendererType(),
                    ComponentResourceUtil.getComponentValue(uiComponentResource),
                    uiComponentResource.getClass().getName(),
                  });
              }
            }
          }
          else {
            logger.debug("Skipped rendering componentResourceId=[{0}]", componentResource.getId());
          }
        }
      }
    }
  }
View Full Code Here

        String originalTarget = (String) uiComponentResource.getAttributes().get(ORIGINAL_TARGET);

        if (!StringPool.HEAD.equals(originalTarget)) {

          ComponentResource componentResource = componentResourceFactory.getComponentResource(
              uiComponentResource);

          if (componentResource.isRenderable()) {
            uiComponentResource.encodeAll(facesContext);

            if (logger.isDebugEnabled()) {

              logger.debug(
                "Rendering resource just before closing liferay-faces-bridge-body </div> name=[{0}] library=[{1}] rendererType=[{2}] value=[{3}] className=[{4}]",
                new Object[] {
                  componentResource.getName(), componentResource.getLibrary(),
                  uiComponentResource.getRendererType(),
                  ComponentResourceUtil.getComponentValue(uiComponentResource),
                  uiComponentResource.getClass().getName(),
                });
            }
          }
          else {
            logger.debug("Skipped rendering componentResourceId=[{0}]", componentResource.getId());
          }
        }
      }
    }
View Full Code Here

  @Override
  public void encodeEnd(FacesContext facesContext, UIComponent uiComponent) throws IOException {

    ComponentResourceFactory componentResourceFactory = (ComponentResourceFactory) FactoryExtensionFinder
      .getFactory(ComponentResourceFactory.class);
    ComponentResource componentResource = componentResourceFactory.getComponentResource(uiComponent);
    String resourceId = componentResource.getId();

    // Determine whether or not the specified resource is already present in the <head> section of the portal page.
    HeadManagedBean headManagedBean = HeadManagedBean.getInstance(facesContext);

    Set<String> headResourceIdsFromManagedBean = null;
View Full Code Here

      UIViewRoot uiViewRoot = facesContext.getViewRoot();
      List<UIComponent> componentResources = uiViewRoot.getComponentResources(facesContext, "head");

      for (UIComponent resource : componentResources) {

        ComponentResource componentResource = componentResourceFactory.getComponentResource(resource);
        String library = componentResource.getLibrary();
        String name = componentResource.getName();

        if ("liferay-faces-reslib".equals(library) &&
            "build/aui-css/css/bootstrap-responsive.min.css".equals(name)) {

          ResponseWriter responseWriter = facesContext.getResponseWriter();
View Full Code Here

  }

  @Override
  public ComponentResource getComponentResource(UIComponent uiComponentResource) {

    ComponentResource wrappedComponentResource = getWrapped().getComponentResource(uiComponentResource);

    return new ComponentResourceAlloyImpl(wrappedComponentResource);
  }
View Full Code Here

TOP

Related Classes of com.liferay.faces.util.application.ComponentResource

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.