You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by ta...@apache.org on 2019/01/13 12:26:59 UTC

[myfaces] branch master updated (dfc286b -> 568dcf2)

This is an automated email from the ASF dual-hosted git repository.

tandraschko pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/myfaces.git.


    from dfc286b  refactored
     new e7dec12  refactored
     new 568dcf2  refactored

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../org/apache/myfaces/taglib/core/SubviewTag.java |   2 +-
 .../org/apache/myfaces/taglib/core/ViewTag.java    |   2 +-
 .../jsp => view}/ServletViewResponseWrapper.java   |   4 +-
 .../apache/myfaces/view/ViewResponseWrapper.java   |   2 +-
 .../view/jsp/JspViewDeclarationLanguage.java       |   2 +-
 .../view/jsp/JspViewDeclarationLanguageBase.java   | 738 ++++++++++-----------
 6 files changed, 374 insertions(+), 376 deletions(-)
 rename impl/src/main/java/org/apache/myfaces/{application/jsp => view}/ServletViewResponseWrapper.java (98%)


[myfaces] 01/02: refactored

Posted by ta...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

tandraschko pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/myfaces.git

commit e7dec125ee0ea789d28fb1270715cda7d52ee95e
Author: Thomas Andraschko <ta...@apache.org>
AuthorDate: Sun Jan 13 13:24:05 2019 +0100

    refactored
---
 .../org/apache/myfaces/taglib/core/SubviewTag.java |   2 +-
 .../org/apache/myfaces/taglib/core/ViewTag.java    |   2 +-
 .../jsp => view}/ServletViewResponseWrapper.java   |   2 +-
 .../apache/myfaces/view/ViewResponseWrapper.java   |   2 +-
 .../view/jsp/JspViewDeclarationLanguage.java       |   2 +-
 .../view/jsp/JspViewDeclarationLanguageBase.java   | 738 ++++++++++-----------
 6 files changed, 374 insertions(+), 374 deletions(-)

diff --git a/impl/src/main/java/org/apache/myfaces/taglib/core/SubviewTag.java b/impl/src/main/java/org/apache/myfaces/taglib/core/SubviewTag.java
index 41e344c..9228e55 100755
--- a/impl/src/main/java/org/apache/myfaces/taglib/core/SubviewTag.java
+++ b/impl/src/main/java/org/apache/myfaces/taglib/core/SubviewTag.java
@@ -24,7 +24,7 @@ import javax.faces.component.UIOutput;
 import javax.faces.context.FacesContext;
 import javax.faces.webapp.UIComponentELTag;
 
-import org.apache.myfaces.application.jsp.ServletViewResponseWrapper;
+import org.apache.myfaces.view.ServletViewResponseWrapper;
 
 /**
  * @author Thomas Spiegl (latest modification by $Author$)
diff --git a/impl/src/main/java/org/apache/myfaces/taglib/core/ViewTag.java b/impl/src/main/java/org/apache/myfaces/taglib/core/ViewTag.java
index 80e8acd..80eb2bd 100755
--- a/impl/src/main/java/org/apache/myfaces/taglib/core/ViewTag.java
+++ b/impl/src/main/java/org/apache/myfaces/taglib/core/ViewTag.java
@@ -35,7 +35,7 @@ import javax.faces.webapp.UIComponentELTag;
 import javax.servlet.jsp.JspException;
 import javax.servlet.jsp.jstl.core.Config;
 
-import org.apache.myfaces.application.jsp.ServletViewResponseWrapper;
+import org.apache.myfaces.view.ServletViewResponseWrapper;
 import org.apache.myfaces.util.LocaleUtils;
 
 /**
diff --git a/impl/src/main/java/org/apache/myfaces/application/jsp/ServletViewResponseWrapper.java b/impl/src/main/java/org/apache/myfaces/view/ServletViewResponseWrapper.java
similarity index 99%
rename from impl/src/main/java/org/apache/myfaces/application/jsp/ServletViewResponseWrapper.java
rename to impl/src/main/java/org/apache/myfaces/view/ServletViewResponseWrapper.java
index 818a668..c2641b0 100644
--- a/impl/src/main/java/org/apache/myfaces/application/jsp/ServletViewResponseWrapper.java
+++ b/impl/src/main/java/org/apache/myfaces/view/ServletViewResponseWrapper.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.myfaces.application.jsp;
+package org.apache.myfaces.view;
 
 import org.apache.myfaces.view.ViewResponseWrapper;
 
diff --git a/impl/src/main/java/org/apache/myfaces/view/ViewResponseWrapper.java b/impl/src/main/java/org/apache/myfaces/view/ViewResponseWrapper.java
index 366b5a3..10c352e 100644
--- a/impl/src/main/java/org/apache/myfaces/view/ViewResponseWrapper.java
+++ b/impl/src/main/java/org/apache/myfaces/view/ViewResponseWrapper.java
@@ -23,5 +23,5 @@ import java.io.Writer;
 
 public interface ViewResponseWrapper
 {
-  void flushToWriter(Writer writer,String encoding) throws IOException;
+    void flushToWriter(Writer writer,String encoding) throws IOException;
 }
diff --git a/impl/src/main/java/org/apache/myfaces/view/jsp/JspViewDeclarationLanguage.java b/impl/src/main/java/org/apache/myfaces/view/jsp/JspViewDeclarationLanguage.java
index 0509f35..a6119f3 100644
--- a/impl/src/main/java/org/apache/myfaces/view/jsp/JspViewDeclarationLanguage.java
+++ b/impl/src/main/java/org/apache/myfaces/view/jsp/JspViewDeclarationLanguage.java
@@ -38,7 +38,7 @@ import javax.servlet.ServletResponse;
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.jsp.jstl.core.Config;
 
-import org.apache.myfaces.application.jsp.ServletViewResponseWrapper;
+import org.apache.myfaces.view.ServletViewResponseWrapper;
 import org.apache.myfaces.application.viewstate.StateCacheUtils;
 import org.apache.myfaces.view.ViewDeclarationLanguageStrategy;
 import org.apache.myfaces.view.facelets.tag.composite.CompositeLibrary;
diff --git a/impl/src/main/java/org/apache/myfaces/view/jsp/JspViewDeclarationLanguageBase.java b/impl/src/main/java/org/apache/myfaces/view/jsp/JspViewDeclarationLanguageBase.java
index aa03657..96cbc80 100644
--- a/impl/src/main/java/org/apache/myfaces/view/jsp/JspViewDeclarationLanguageBase.java
+++ b/impl/src/main/java/org/apache/myfaces/view/jsp/JspViewDeclarationLanguageBase.java
@@ -53,404 +53,404 @@ import org.apache.myfaces.view.ViewResponseWrapper;
 
 public abstract class JspViewDeclarationLanguageBase extends ViewDeclarationLanguageBase
 {
-  private static final Logger log = Logger.getLogger(JspViewDeclarationLanguageBase.class.getName());
-  
-  private static final String FORM_STATE_MARKER = "<!-...@-->";
-  private static final String AFTER_VIEW_TAG_CONTENT_PARAM = JspViewDeclarationLanguageBase.class
-              + ".AFTER_VIEW_TAG_CONTENT";
-  private static final int FORM_STATE_MARKER_LEN = FORM_STATE_MARKER.length();
-
-  private ViewIdSupport viewIdSupport;
-  
-  @Override
-  public String getId()
-  {
-      return ViewDeclarationLanguage.JSP_VIEW_DECLARATION_LANGUAGE_ID;
-  }
-  
-  @Override
-  public void buildView(FacesContext context, UIViewRoot view) throws IOException
-  {
-      // memorize that buildView() has been called for this view
-      setViewBuilt(context, view);
-      
-      if (context.getPartialViewContext().isPartialRequest())
-      {
-          // try to get (or create) a ResponseSwitch and turn off the output
-          Object origResponse = context.getExternalContext().getResponse();
-          ResponseSwitch responseSwitch = getResponseSwitch(origResponse);
-          if (responseSwitch == null)
-          {
-              // no ResponseSwitch installed yet - create one 
-              responseSwitch = createResponseSwitch(origResponse);
-              if (responseSwitch != null)
-              {
-                  // install the ResponseSwitch
-                  context.getExternalContext().setResponse(responseSwitch);
-              }
-          }
-          if (responseSwitch != null)
+    private static final Logger log = Logger.getLogger(JspViewDeclarationLanguageBase.class.getName());
+
+    private static final String FORM_STATE_MARKER = "<!-...@-->";
+    private static final String AFTER_VIEW_TAG_CONTENT_PARAM = JspViewDeclarationLanguageBase.class
+                + ".AFTER_VIEW_TAG_CONTENT";
+    private static final int FORM_STATE_MARKER_LEN = FORM_STATE_MARKER.length();
+
+    private ViewIdSupport viewIdSupport;
+
+    @Override
+    public String getId()
+    {
+        return ViewDeclarationLanguage.JSP_VIEW_DECLARATION_LANGUAGE_ID;
+    }
+
+    @Override
+    public void buildView(FacesContext context, UIViewRoot view) throws IOException
+    {
+        // memorize that buildView() has been called for this view
+        setViewBuilt(context, view);
+
+        if (context.getPartialViewContext().isPartialRequest())
+        {
+            // try to get (or create) a ResponseSwitch and turn off the output
+            Object origResponse = context.getExternalContext().getResponse();
+            ResponseSwitch responseSwitch = getResponseSwitch(origResponse);
+            if (responseSwitch == null)
+            {
+                // no ResponseSwitch installed yet - create one 
+                responseSwitch = createResponseSwitch(origResponse);
+                if (responseSwitch != null)
+                {
+                    // install the ResponseSwitch
+                    context.getExternalContext().setResponse(responseSwitch);
+                }
+            }
+            if (responseSwitch != null)
+            {
+                // turn the output off
+                responseSwitch.setEnabled(false);
+            }
+        }
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public BeanInfo getComponentMetadata(FacesContext context, Resource componentResource)
+    {
+        throw new UnsupportedOperationException();
+    }
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public Resource getScriptComponentResource(FacesContext context, Resource componentResource)
+    {
+        throw new UnsupportedOperationException();
+    }
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void renderView(FacesContext context, UIViewRoot view) throws IOException
+    {
+        //Try not to use native objects in this class.  Both MyFaces and the bridge
+        //provide implementations of buildView but they do not override this class.
+        checkNull(context, "context");
+        checkNull(view, "view");
+
+        // do not render the view if the rendered attribute for the view is false
+        if (!view.isRendered())
+        {
+            if (log.isLoggable(Level.FINEST))
+            {
+                log.finest("View is not rendered");
+            }
+            return;
+        }
+
+        // Check if the current view has already been built via VDL.buildView()
+        // and if not, build it from here. This is necessary because legacy ViewHandler
+        // implementations return null on getViewDeclarationLanguage() and thus
+        // VDL.buildView() is never called. Furthermore, before JSF 2.0 introduced 
+        // the VDLs, the code that built the view was in ViewHandler.renderView().
+        if (!isViewBuilt(context, view))
+        {
+            buildView(context, view);
+        }
+
+        ExternalContext externalContext = context.getExternalContext();
+
+        String viewId = context.getViewRoot().getViewId();
+
+        if (log.isLoggable(Level.FINEST))
+        {
+            log.finest("Rendering JSP view: " + viewId);
+        }
+
+
+        // handle character encoding as of section 2.5.2.2 of JSF 1.1
+        if(null != externalContext.getSession(false))
+        {
+          externalContext.getSessionMap().put(ViewHandler.CHARACTER_ENCODING_KEY, 
+                  externalContext.getResponseCharacterEncoding());
+        }
+
+        // render the view in this method (since JSF 1.2)
+        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);
+        }
+
+        // try to enable the ResponseSwitch again (disabled in buildView())
+        Object response = context.getExternalContext().getResponse();
+        ResponseSwitch responseSwitch = getResponseSwitch(response);
+        if (responseSwitch != null)
+        {
+            responseSwitch.setEnabled(true);
+        }
+
+        ResponseWriter oldResponseWriter = responseWriter;
+        StringWriter stateAwareWriter = null;
+
+        StateManager stateManager = context.getApplication().getStateManager();
+        boolean viewStateAlreadyEncoded = isViewStateAlreadyEncoded(context);
+
+        if (!viewStateAlreadyEncoded)
+        {
+          // we will need to parse the reponse and replace the view_state token with the actual state
+          stateAwareWriter = new StringWriter();
+
+          // Create a new response-writer using as an underlying writer the stateAwareWriter
+          // Effectively, all output will be buffered in the stateAwareWriter so that later
+          // this writer can replace the state-markers with the actual state.
+          responseWriter = oldResponseWriter.cloneWithWriter(stateAwareWriter);
+          context.setResponseWriter(responseWriter);
+        }
+
+        try
+        {
+          if (!actuallyRenderView(context, view))
           {
-              // turn the output off
-              responseSwitch.setEnabled(false);
+            return;
           }
-      }
-  }
-  
-  /**
-   * {@inheritDoc}
-   */
-  @Override
-  public BeanInfo getComponentMetadata(FacesContext context, Resource componentResource)
-  {
-      throw new UnsupportedOperationException();
-  }
-  /**
-   * {@inheritDoc}
-   */
-  @Override
-  public Resource getScriptComponentResource(FacesContext context, Resource componentResource)
-  {
-      throw new UnsupportedOperationException();
-  }
-  /**
-   * {@inheritDoc}
-   */
-  @Override
-  public void renderView(FacesContext context, UIViewRoot view) throws IOException
-  {
-      //Try not to use native objects in this class.  Both MyFaces and the bridge
-      //provide implementations of buildView but they do not override this class.
-      checkNull(context, "context");
-      checkNull(view, "view");
-      
-      // do not render the view if the rendered attribute for the view is false
-      if (!view.isRendered())
-      {
-          if (log.isLoggable(Level.FINEST))
+        }
+        finally
+        {
+          if(oldResponseWriter != null)
           {
-              log.finest("View is not rendered");
+              context.setResponseWriter(oldResponseWriter);    
           }
-          return;
-      }
-      
-      // Check if the current view has already been built via VDL.buildView()
-      // and if not, build it from here. This is necessary because legacy ViewHandler
-      // implementations return null on getViewDeclarationLanguage() and thus
-      // VDL.buildView() is never called. Furthermore, before JSF 2.0 introduced 
-      // the VDLs, the code that built the view was in ViewHandler.renderView().
-      if (!isViewBuilt(context, view))
-      {
-          buildView(context, view);
-      }
-  
-      ExternalContext externalContext = context.getExternalContext();
-  
-      String viewId = context.getViewRoot().getViewId();
-  
-      if (log.isLoggable(Level.FINEST))
-      {
-          log.finest("Rendering JSP view: " + viewId);
-      }
-  
-  
-      // handle character encoding as of section 2.5.2.2 of JSF 1.1
-      if(null != externalContext.getSession(false))
-      {
-        externalContext.getSessionMap().put(ViewHandler.CHARACTER_ENCODING_KEY, 
-                externalContext.getResponseCharacterEncoding());
-      }
-  
-      // render the view in this method (since JSF 1.2)
-      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);
-      }
-      
-      // try to enable the ResponseSwitch again (disabled in buildView())
-      Object response = context.getExternalContext().getResponse();
-      ResponseSwitch responseSwitch = getResponseSwitch(response);
-      if (responseSwitch != null)
-      {
-          responseSwitch.setEnabled(true);
-      }
-  
-      ResponseWriter oldResponseWriter = responseWriter;
-      StringWriter stateAwareWriter = null;
-      
-      StateManager stateManager = context.getApplication().getStateManager();
-      boolean viewStateAlreadyEncoded = isViewStateAlreadyEncoded(context);
-      
-      if (!viewStateAlreadyEncoded)
-      {
-        // we will need to parse the reponse and replace the view_state token with the actual state
-        stateAwareWriter = new StringWriter();
-  
-        // Create a new response-writer using as an underlying writer the stateAwareWriter
-        // Effectively, all output will be buffered in the stateAwareWriter so that later
-        // this writer can replace the state-markers with the actual state.
-        responseWriter = oldResponseWriter.cloneWithWriter(stateAwareWriter);
-        context.setResponseWriter(responseWriter);
-      }
-  
-      try
-      {
-        if (!actuallyRenderView(context, view))
+        }
+
+        if (!viewStateAlreadyEncoded)
         {
-          return;
+          // parse the response and replace the token wit the state
+          flushBufferToWriter(stateAwareWriter.getBuffer(), externalContext.getResponseOutputWriter());
         }
-      }
-      finally
-      {
-        if(oldResponseWriter != null)
+        else
         {
-            context.setResponseWriter(oldResponseWriter);    
+          stateManager.saveView(context);
         }
-      }
-  
-      if (!viewStateAlreadyEncoded)
+
+        // now disable the ResponseSwitch again
+        if (responseSwitch != null)
+        {
+            responseSwitch.setEnabled(false);
+        }
+
+        // Final step - we output any content in the wrappedResponse response from above to the response,
+        // removing the wrappedResponse response from the request, we don't need it anymore
+        ViewResponseWrapper afterViewTagResponse = (ViewResponseWrapper) externalContext.getRequestMap()
+                .get(AFTER_VIEW_TAG_CONTENT_PARAM);
+        externalContext.getRequestMap().remove(AFTER_VIEW_TAG_CONTENT_PARAM);
+
+        // afterViewTagResponse is null if the current request is a partial request
+        if (afterViewTagResponse != null)
+        {
+            afterViewTagResponse.flushToWriter(externalContext.getResponseOutputWriter(), 
+                    externalContext.getResponseCharacterEncoding());
+        }
+
+        //TODO sobryan: Is this right?
+        context.getResponseWriter().flush();
+    }
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public ViewMetadata getViewMetadata(FacesContext context, String viewId)
+    {
+        // Not necessary given that this method always returns null, but staying true to
+        // the spec.
+
+        checkNull(context, "context");
+        //checkNull(viewId, "viewId");
+
+        // JSP impl must return null.
+
+        return null;
+    }
+
+    protected boolean isViewStateAlreadyEncoded(FacesContext context)
+    {
+      if (MyfacesConfig.getCurrentInstance(context).isMyfacesImplAvailable())
       {
-        // parse the response and replace the token wit the state
-        flushBufferToWriter(stateAwareWriter.getBuffer(), externalContext.getResponseOutputWriter());
+        // In MyFaces the viewState key is already encoded is server side state saving is being used
+        return !context.getApplication().getStateManager().isSavingStateInClient(context);
       }
       else
       {
-        stateManager.saveView(context);
+        return false;
       }
-      
-      // now disable the ResponseSwitch again
-      if (responseSwitch != null)
+    }
+
+    protected void setAfterViewTagResponseWrapper(ExternalContext ec, ViewResponseWrapper wrapper)
+    {
+      ec.getRequestMap().put(AFTER_VIEW_TAG_CONTENT_PARAM, wrapper);
+    }
+
+    protected void flushBufferToWriter(StringBuffer buff, Writer writer) throws IOException
+    {
+      FacesContext facesContext = FacesContext.getCurrentInstance();
+      StateManager stateManager = facesContext.getApplication().getStateManager();
+
+      StringWriter stateWriter = new StringWriter();
+      ResponseWriter realWriter = facesContext.getResponseWriter();
+      facesContext.setResponseWriter(realWriter.cloneWithWriter(stateWriter));
+
+      Object serializedView = stateManager.saveView(facesContext);
+
+      stateManager.writeState(facesContext, serializedView);
+      facesContext.setResponseWriter(realWriter);
+
+      String state = stateWriter.getBuffer().toString();
+
+      // State markers must be replaced
+      int lastFormMarkerPos = 0;
+      int formMarkerPos = 0;
+      // Find all state markers and write out actual state instead
+      while ((formMarkerPos = buff.indexOf(JspViewDeclarationLanguageBase.FORM_STATE_MARKER, formMarkerPos)) > -1)
       {
-          responseSwitch.setEnabled(false);
+        // Write content before state marker
+        writePartialBuffer(buff, lastFormMarkerPos, formMarkerPos, writer);
+        // Write state and move position in buffer after marker
+        writer.write(state);
+        formMarkerPos += JspViewDeclarationLanguageBase.FORM_STATE_MARKER_LEN;
+        lastFormMarkerPos = formMarkerPos;
       }
-  
-      // Final step - we output any content in the wrappedResponse response from above to the response,
-      // removing the wrappedResponse response from the request, we don't need it anymore
-      ViewResponseWrapper afterViewTagResponse = (ViewResponseWrapper) externalContext.getRequestMap()
-              .get(AFTER_VIEW_TAG_CONTENT_PARAM);
-      externalContext.getRequestMap().remove(AFTER_VIEW_TAG_CONTENT_PARAM);
-      
-      // afterViewTagResponse is null if the current request is a partial request
-      if (afterViewTagResponse != null)
+
+      // Write content after last state marker
+      if (lastFormMarkerPos < buff.length())
       {
-          afterViewTagResponse.flushToWriter(externalContext.getResponseOutputWriter(), 
-                  externalContext.getResponseCharacterEncoding());
+        writePartialBuffer(buff, lastFormMarkerPos, buff.length(), writer);
+      }
+    }
+
+    protected void writePartialBuffer(StringBuffer contentBuffer, int beginIndex, 
+            int endIndex, Writer writer) throws IOException
+    {
+      int index = beginIndex;
+      int bufferSize = 2048;
+      char[] bufToWrite = new char[bufferSize];
+
+      while (index < endIndex)
+      {
+        int maxSize = Math.min(bufferSize, endIndex - index);
+
+        contentBuffer.getChars(index, index + maxSize, bufToWrite, 0);
+        writer.write(bufToWrite, 0, maxSize);
+
+        index += bufferSize;
       }
-  
-      //TODO sobryan: Is this right?
-      context.getResponseWriter().flush();
-  }
-  /**
-   * {@inheritDoc}
-   */
-  @Override
-  public ViewMetadata getViewMetadata(FacesContext context, String viewId)
-  {
-      // Not necessary given that this method always returns null, but staying true to
-      // the spec.
-  
-      checkNull(context, "context");
-      //checkNull(viewId, "viewId");
-  
-      // JSP impl must return null.
-  
-      return null;
-  }
-  
-  protected boolean isViewStateAlreadyEncoded(FacesContext context)
-  {
-    if (MyfacesConfig.getCurrentInstance(context).isMyfacesImplAvailable())
+    }
+
+    /**
+     * Render the view now - properly setting and resetting the response writer
+     * [MF] Modified to return a boolean so subclass that delegates can determine
+     * whether the rendering succeeded or not. TRUE means success.
+     */
+    protected boolean actuallyRenderView(FacesContext facesContext, UIViewRoot viewToRender)
+        throws IOException
     {
-      // In MyFaces the viewState key is already encoded is server side state saving is being used
-      return !context.getApplication().getStateManager().isSavingStateInClient(context);
+        // Set the new ResponseWriter into the FacesContext, saving the old one aside.
+        ResponseWriter responseWriter = facesContext.getResponseWriter();
+
+        // Now we actually render the document
+        // Call startDocument() on the ResponseWriter.
+        responseWriter.startDocument();
+
+        // Call encodeAll() on the UIViewRoot
+        viewToRender.encodeAll(facesContext);
+
+        // Call endDocument() on the ResponseWriter
+        responseWriter.endDocument();
+
+        responseWriter.flush();
+
+        // rendered successfully -- forge ahead
+        return true;
     }
-    else
+
+    @Override
+    public StateManagementStrategy getStateManagementStrategy(FacesContext context, String viewId)
     {
-      return false;
+        return null;
     }
-  }
-  
-  protected void setAfterViewTagResponseWrapper(ExternalContext ec, ViewResponseWrapper wrapper)
-  {
-    ec.getRequestMap().put(AFTER_VIEW_TAG_CONTENT_PARAM, wrapper);
-  }
-  
-  protected void flushBufferToWriter(StringBuffer buff, Writer writer) throws IOException
-  {
-    FacesContext facesContext = FacesContext.getCurrentInstance();
-    StateManager stateManager = facesContext.getApplication().getStateManager();
-
-    StringWriter stateWriter = new StringWriter();
-    ResponseWriter realWriter = facesContext.getResponseWriter();
-    facesContext.setResponseWriter(realWriter.cloneWithWriter(stateWriter));
-
-    Object serializedView = stateManager.saveView(facesContext);
-
-    stateManager.writeState(facesContext, serializedView);
-    facesContext.setResponseWriter(realWriter);
-
-    String state = stateWriter.getBuffer().toString();
-
-    // State markers must be replaced
-    int lastFormMarkerPos = 0;
-    int formMarkerPos = 0;
-    // Find all state markers and write out actual state instead
-    while ((formMarkerPos = buff.indexOf(JspViewDeclarationLanguageBase.FORM_STATE_MARKER, formMarkerPos)) > -1)
+
+    @Override
+    protected String calculateViewId(FacesContext context, String viewId)
     {
-      // Write content before state marker
-      writePartialBuffer(buff, lastFormMarkerPos, formMarkerPos, writer);
-      // Write state and move position in buffer after marker
-      writer.write(state);
-      formMarkerPos += JspViewDeclarationLanguageBase.FORM_STATE_MARKER_LEN;
-      lastFormMarkerPos = formMarkerPos;
+        if (viewIdSupport == null)
+        {
+            viewIdSupport = ViewIdSupport.getInstance(context);
+        }
+
+        return viewIdSupport.deriveLogicalViewId(context, viewId);
     }
 
-    // Write content after last state marker
-    if (lastFormMarkerPos < buff.length())
+    /**
+     * Returns true if the given UIViewRoot has already been built via VDL.buildView().
+     * This is necessary because legacy ViewHandler implementations return null on 
+     * getViewDeclarationLanguage() and thus VDL.buildView() is never called. 
+     * So we have to check this in renderView() and, if it is false, we have to
+     * call buildView() manually before the rendering.
+     *  
+     * @param facesContext
+     * @param view
+     * @return
+     */
+    protected boolean isViewBuilt(FacesContext facesContext, UIViewRoot view)
     {
-      writePartialBuffer(buff, lastFormMarkerPos, buff.length(), writer);
+        return Boolean.TRUE.equals(facesContext.getAttributes().get(view));
     }
-  }
-  
-  protected void writePartialBuffer(StringBuffer contentBuffer, int beginIndex, 
-          int endIndex, Writer writer) throws IOException
-  {
-    int index = beginIndex;
-    int bufferSize = 2048;
-    char[] bufToWrite = new char[bufferSize];
-
-    while (index < endIndex)
+
+    /**
+     * Saves a flag in the attribute map of the FacesContext to indicate
+     * that the given UIViewRoot was already built with VDL.buildView().
+     * 
+     * @param facesContext
+     * @param view
+     */
+    protected void setViewBuilt(FacesContext facesContext, UIViewRoot view)
     {
-      int maxSize = Math.min(bufferSize, endIndex - index);
+        facesContext.getAttributes().put(view, Boolean.TRUE);
+    }
 
-      contentBuffer.getChars(index, index + maxSize, bufToWrite, 0);
-      writer.write(bufToWrite, 0, maxSize);
+    /**
+     * Trys to obtain a ResponseSwitch from the Response.
+     * @param response
+     * @return if found, the ResponseSwitch, null otherwise
+     */
+    private static ResponseSwitch getResponseSwitch(Object response)
+    {
+        // unwrap the response until we find a ResponseSwitch
+        while (response != null)
+        {
+            if (response instanceof ResponseSwitch)
+            {
+                // found
+                return (ResponseSwitch) response;
+            }
+            if (response instanceof ServletResponseWrapper)
+            {
+                // unwrap
+                response = ((ServletResponseWrapper) response).getResponse();
+            }
+            // no more possibilities to find a ResponseSwitch
+            break; 
+        }
+        return null; // not found
+    }
 
-      index += bufferSize;
+    /**
+     * Try to create a ResponseSwitch for this response.
+     * @param response
+     * @return the created ResponseSwitch, if there is a ResponseSwitch 
+     *         implementation for the given response, null otherwise
+     */
+    private static ResponseSwitch createResponseSwitch(Object response)
+    {
+        if (response instanceof HttpServletResponse)
+        {
+            return new HttpServletResponseSwitch((HttpServletResponse) response);
+        }
+        else if (response instanceof ServletResponse)
+        {
+            return new ServletResponseSwitch((ServletResponse) response);
+        }
+        return null;
     }
-  }
-
-  /**
-   * Render the view now - properly setting and resetting the response writer
-   * [MF] Modified to return a boolean so subclass that delegates can determine
-   * whether the rendering succeeded or not. TRUE means success.
-   */
-  protected boolean actuallyRenderView(FacesContext facesContext, UIViewRoot viewToRender)
-      throws IOException
-  {
-      // Set the new ResponseWriter into the FacesContext, saving the old one aside.
-      ResponseWriter responseWriter = facesContext.getResponseWriter();
-  
-      // Now we actually render the document
-      // Call startDocument() on the ResponseWriter.
-      responseWriter.startDocument();
-  
-      // Call encodeAll() on the UIViewRoot
-      viewToRender.encodeAll(facesContext);
-  
-      // Call endDocument() on the ResponseWriter
-      responseWriter.endDocument();
-  
-      responseWriter.flush();
-      
-      // rendered successfully -- forge ahead
-      return true;
-  }
-  
-  @Override
-  public StateManagementStrategy getStateManagementStrategy(FacesContext context, String viewId)
-  {
-      return null;
-  }
-
-  @Override
-  protected String calculateViewId(FacesContext context, String viewId)
-  {
-      if (viewIdSupport == null)
-      {
-          viewIdSupport = ViewIdSupport.getInstance(context);
-      }
-  
-      return viewIdSupport.deriveLogicalViewId(context, viewId);
-  }
-  
-  /**
-   * Returns true if the given UIViewRoot has already been built via VDL.buildView().
-   * This is necessary because legacy ViewHandler implementations return null on 
-   * getViewDeclarationLanguage() and thus VDL.buildView() is never called. 
-   * So we have to check this in renderView() and, if it is false, we have to
-   * call buildView() manually before the rendering.
-   *  
-   * @param facesContext
-   * @param view
-   * @return
-   */
-  protected boolean isViewBuilt(FacesContext facesContext, UIViewRoot view)
-  {
-      return Boolean.TRUE.equals(facesContext.getAttributes().get(view));
-  }
-  
-  /**
-   * Saves a flag in the attribute map of the FacesContext to indicate
-   * that the given UIViewRoot was already built with VDL.buildView().
-   * 
-   * @param facesContext
-   * @param view
-   */
-  protected void setViewBuilt(FacesContext facesContext, UIViewRoot view)
-  {
-      facesContext.getAttributes().put(view, Boolean.TRUE);
-  }
-
-  /**
-   * Trys to obtain a ResponseSwitch from the Response.
-   * @param response
-   * @return if found, the ResponseSwitch, null otherwise
-   */
-  private static ResponseSwitch getResponseSwitch(Object response)
-  {
-      // unwrap the response until we find a ResponseSwitch
-      while (response != null)
-      {
-          if (response instanceof ResponseSwitch)
-          {
-              // found
-              return (ResponseSwitch) response;
-          }
-          if (response instanceof ServletResponseWrapper)
-          {
-              // unwrap
-              response = ((ServletResponseWrapper) response).getResponse();
-          }
-          // no more possibilities to find a ResponseSwitch
-          break; 
-      }
-      return null; // not found
-  }
-  
-  /**
-   * Try to create a ResponseSwitch for this response.
-   * @param response
-   * @return the created ResponseSwitch, if there is a ResponseSwitch 
-   *         implementation for the given response, null otherwise
-   */
-  private static ResponseSwitch createResponseSwitch(Object response)
-  {
-      if (response instanceof HttpServletResponse)
-      {
-          return new HttpServletResponseSwitch((HttpServletResponse) response);
-      }
-      else if (response instanceof ServletResponse)
-      {
-          return new ServletResponseSwitch((ServletResponse) response);
-      }
-      return null;
-  }
 
 }


[myfaces] 02/02: refactored

Posted by ta...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

tandraschko pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/myfaces.git

commit 568dcf24f47fbdd2df9d08d887c32b4c8e8d241f
Author: Thomas Andraschko <ta...@apache.org>
AuthorDate: Sun Jan 13 13:27:21 2019 +0100

    refactored
---
 .../main/java/org/apache/myfaces/view/ServletViewResponseWrapper.java   | 2 --
 1 file changed, 2 deletions(-)

diff --git a/impl/src/main/java/org/apache/myfaces/view/ServletViewResponseWrapper.java b/impl/src/main/java/org/apache/myfaces/view/ServletViewResponseWrapper.java
index c2641b0..dd32fe1 100644
--- a/impl/src/main/java/org/apache/myfaces/view/ServletViewResponseWrapper.java
+++ b/impl/src/main/java/org/apache/myfaces/view/ServletViewResponseWrapper.java
@@ -18,8 +18,6 @@
  */
 package org.apache.myfaces.view;
 
-import org.apache.myfaces.view.ViewResponseWrapper;
-
 import javax.servlet.ServletOutputStream;
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpServletResponseWrapper;