You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by bo...@apache.org on 2007/11/27 14:35:28 UTC
svn commit: r598637 - in /myfaces/tobago/trunk:
core/src/main/java/org/apache/myfaces/tobago/ajax/api/
core/src/main/java/org/apache/myfaces/tobago/util/
sandbox/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/
theme/sca...
Author: bommel
Date: Tue Nov 27 05:35:26 2007
New Revision: 598637
URL: http://svn.apache.org/viewvc?rev=598637&view=rev
Log:
(TOBAGO-555) Using a FastStringWriter instead of java.io.StringWriter and optimize inital buffer size for response buffering
Added:
myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/util/FastStringWriter.java (with props)
Modified:
myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/ajax/api/AjaxPhaseListener.java
myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/ajax/api/AjaxResponseRenderer.java
myfaces/tobago/trunk/sandbox/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/TreeRenderer.java
myfaces/tobago/trunk/theme/scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/MenuBarRenderer.java
myfaces/tobago/trunk/theme/scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/PageRenderer.java
myfaces/tobago/trunk/theme/scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/TreeOldRenderer.java
Modified: myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/ajax/api/AjaxPhaseListener.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/ajax/api/AjaxPhaseListener.java?rev=598637&r1=598636&r2=598637&view=diff
==============================================================================
--- myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/ajax/api/AjaxPhaseListener.java (original)
+++ myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/ajax/api/AjaxPhaseListener.java Tue Nov 27 05:35:26 2007
@@ -24,6 +24,7 @@
import org.apache.myfaces.tobago.context.ResourceManagerUtil;
import org.apache.myfaces.tobago.util.RequestUtils;
import org.apache.myfaces.tobago.util.ResponseUtils;
+import org.apache.myfaces.tobago.util.FastStringWriter;
import org.apache.myfaces.tobago.renderkit.html.HtmlConstants;
import org.apache.myfaces.tobago.renderkit.html.HtmlAttributes;
@@ -41,8 +42,7 @@
import javax.faces.render.RenderKitFactory;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
-import java.io.PrintWriter;
-import java.io.StringWriter;
+import java.io.PrintWriter;;
import java.util.Map;
/**
@@ -103,7 +103,7 @@
RequestUtils.ensureEncoding(externalContext);
ResponseUtils.ensureNoCacheHeader(externalContext);
final UIViewRoot viewRoot = facesContext.getViewRoot();
- StringWriter content = new StringWriter();
+ FastStringWriter content = new FastStringWriter(1024*10);
RenderKitFactory renderFactory = (RenderKitFactory)
FactoryFinder.getFactory(FactoryFinder.RENDER_KIT_FACTORY);
RenderKit renderKit = renderFactory.getRenderKit(
@@ -113,9 +113,7 @@
AjaxUtils.processAjax(facesContext, viewRoot);
-
-
- StringWriter jsfState = new StringWriter();
+ FastStringWriter jsfState = new FastStringWriter();
ResponseWriter jsfStateWriter = contentWriter.cloneWithWriter(jsfState);
facesContext.setResponseWriter(jsfStateWriter);
Modified: myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/ajax/api/AjaxResponseRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/ajax/api/AjaxResponseRenderer.java?rev=598637&r1=598636&r2=598637&view=diff
==============================================================================
--- myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/ajax/api/AjaxResponseRenderer.java (original)
+++ myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/ajax/api/AjaxResponseRenderer.java Tue Nov 27 05:35:26 2007
@@ -17,43 +17,41 @@
* limitations under the License.
*/
-import static org.apache.myfaces.tobago.lifecycle.TobagoLifecycle.FACES_MESSAGES_KEY;
-
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-
-import org.apache.myfaces.tobago.util.RequestUtils;
-import org.apache.myfaces.tobago.util.ResponseUtils;
-import org.apache.myfaces.tobago.util.EncodeAjaxCallback;
-import org.apache.myfaces.tobago.util.Callback;
-import org.apache.myfaces.tobago.renderkit.html.HtmlConstants;
-import org.apache.myfaces.tobago.renderkit.html.HtmlAttributes;
-import static org.apache.myfaces.tobago.lifecycle.TobagoLifecycle.VIEW_ROOT_KEY;
import static org.apache.myfaces.tobago.TobagoConstants.ATTR_CHARSET;
import org.apache.myfaces.tobago.component.ComponentUtil;
+import static org.apache.myfaces.tobago.lifecycle.TobagoLifecycle.FACES_MESSAGES_KEY;
+import static org.apache.myfaces.tobago.lifecycle.TobagoLifecycle.VIEW_ROOT_KEY;
+import org.apache.myfaces.tobago.renderkit.html.HtmlAttributes;
+import org.apache.myfaces.tobago.renderkit.html.HtmlConstants;
+import org.apache.myfaces.tobago.util.Callback;
+import org.apache.myfaces.tobago.util.EncodeAjaxCallback;
+import org.apache.myfaces.tobago.util.FastStringWriter;
+import org.apache.myfaces.tobago.util.RequestUtils;
+import org.apache.myfaces.tobago.util.ResponseUtils;
+import javax.faces.FactoryFinder;
+import javax.faces.application.StateManager;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIViewRoot;
+import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.faces.context.ResponseWriter;
-import javax.faces.context.ExternalContext;
-import javax.faces.component.UIViewRoot;
-import javax.faces.component.UIComponent;
-import javax.faces.render.RenderKitFactory;
import javax.faces.render.RenderKit;
-import javax.faces.FactoryFinder;
-import javax.faces.application.StateManager;
-import javax.servlet.http.HttpServletResponse;
-import javax.naming.InitialContext;
+import javax.faces.render.RenderKitFactory;
import javax.naming.Context;
+import javax.naming.InitialContext;
import javax.naming.NamingException;
-import java.io.StringWriter;
+import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
-import java.util.List;
import java.util.ArrayList;
-import java.util.Map;
-import java.util.Iterator;
import java.util.EmptyStackException;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
public class AjaxResponseRenderer {
@@ -114,7 +112,7 @@
}
writeResponseReload(facesContext, renderKit);
} else {
- List<StringWriter> responseParts = new ArrayList<StringWriter>();
+ List<FastStringWriter> responseParts = new ArrayList<FastStringWriter>();
Map<String, UIComponent> ajaxComponents = AjaxUtils.getAjaxComponents(facesContext);
for (Map.Entry<String, UIComponent> entry : ajaxComponents.entrySet()) {
@@ -128,9 +126,9 @@
}
}
- private StringWriter renderComponent(FacesContext facesContext, RenderKit renderKit, String clientId,
+ private FastStringWriter renderComponent(FacesContext facesContext, RenderKit renderKit, String clientId,
AjaxComponent component) throws IOException {
- StringWriter content = new StringWriter();
+ FastStringWriter content = new FastStringWriter();
ResponseWriter contentWriter = renderKit.createResponseWriter(content, null, null);
facesContext.setResponseWriter(contentWriter);
if (LOG.isDebugEnabled()) {
@@ -141,7 +139,7 @@
// TODO: invokeOnComponent()
ComponentUtil.invokeOnComponent(facesContext, clientId, (UIComponent) component, callback);
} catch (EmptyStackException e) {
- LOG.error(" content = \"" + content.getBuffer().toString() + "\"");
+ LOG.error(" content = \"" + content.toString() + "\"");
throw e;
}
@@ -149,20 +147,20 @@
}
private void writeResponse(FacesContext facesContext, RenderKit renderKit,
- List<StringWriter> parts, String state)
+ List<FastStringWriter> parts, String state)
throws IOException {
writeResponse(facesContext, renderKit, CODE_SUCCESS, parts, state);
}
private void writeResponseReload(FacesContext facesContext, RenderKit renderKit)
throws IOException {
- writeResponse(facesContext, renderKit, CODE_RELOAD_REQUIRED, new ArrayList<StringWriter>(0), "");
+ writeResponse(facesContext, renderKit, CODE_RELOAD_REQUIRED, new ArrayList<FastStringWriter>(0), "");
}
- private StringWriter writeState(FacesContext facesContext, RenderKit renderKit, String state)
+ private FastStringWriter writeState(FacesContext facesContext, RenderKit renderKit, String state)
throws IOException {
- StringWriter jsfState = new StringWriter();
+ FastStringWriter jsfState = new FastStringWriter();
ResponseWriter stateWriter = renderKit.createResponseWriter(jsfState, null, null);
facesContext.setResponseWriter(stateWriter);
stateWriter.startElement(HtmlConstants.SCRIPT, null);
@@ -177,7 +175,7 @@
private String saveState(FacesContext facesContext, RenderKit renderKit)
throws IOException {
- StringWriter jsfState = new StringWriter();
+ FastStringWriter jsfState = new FastStringWriter();
ResponseWriter stateWriter = renderKit.createResponseWriter(jsfState, null, null);
facesContext.setResponseWriter(stateWriter);
@@ -204,7 +202,7 @@
}
private void writeResponse(FacesContext facesContext, RenderKit renderKit,
- String responseCode, List<StringWriter> responseParts, String jsfState)
+ String responseCode, List<FastStringWriter> responseParts, String jsfState)
throws IOException {
ExternalContext externalContext = facesContext.getExternalContext();
RequestUtils.ensureEncoding(externalContext);
@@ -220,18 +218,18 @@
StringBuilder buffer = new StringBuilder(responseCode);
// add parts to response
- for (StringWriter part : responseParts) {
+ for (FastStringWriter part : responseParts) {
// TODO surround by javascript parsable tokens
-
+ String partStr = part.toString();
// FIXME:
- if (part.toString().startsWith(CODE_NOT_MODIFIED)
- && buffer.toString().equals(responseCode)) {
+ if (partStr.startsWith(CODE_NOT_MODIFIED)
+ && partStr.equals(responseCode)) {
// remove resopnseCode from buffer
buffer.setLength(0);
}
// /FIXME:
- buffer.append(part.toString());
+ buffer.append(partStr);
}
// add jsfState to response
Added: myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/util/FastStringWriter.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/util/FastStringWriter.java?rev=598637&view=auto
==============================================================================
--- myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/util/FastStringWriter.java (added)
+++ myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/util/FastStringWriter.java Tue Nov 27 05:35:26 2007
@@ -0,0 +1,66 @@
+package org.apache.myfaces.tobago.util;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import java.io.Writer;
+import java.io.IOException;
+
+public class FastStringWriter extends Writer {
+
+ private StringBuilder stringBuilder;
+
+ public FastStringWriter() {
+ this(1024);
+ }
+
+ public FastStringWriter(int initialSize) {
+ stringBuilder = new StringBuilder(initialSize);
+ }
+
+ public void write(int c) {
+ stringBuilder.append((char) c);
+ }
+
+ public void write(char cbuf[], int off, int len) {
+ stringBuilder.append(cbuf, off, len);
+ }
+
+ public void write(String str) {
+ stringBuilder.append(str);
+ }
+
+ public void write(String str, int off, int len) {
+ stringBuilder.append(str.substring(off, off + len));
+ }
+
+ public String toString() {
+ return stringBuilder.toString();
+ }
+
+ public void flush() {
+ // do nothing
+ }
+
+ public void close() throws IOException {
+ // do nothing
+ }
+
+ public StringBuilder getBuilder() {
+ return stringBuilder;
+ }
+}
Propchange: myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/util/FastStringWriter.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/util/FastStringWriter.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Modified: myfaces/tobago/trunk/sandbox/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/TreeRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/sandbox/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/TreeRenderer.java?rev=598637&r1=598636&r2=598637&view=diff
==============================================================================
--- myfaces/tobago/trunk/sandbox/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/TreeRenderer.java (original)
+++ myfaces/tobago/trunk/sandbox/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/TreeRenderer.java Tue Nov 27 05:35:26 2007
@@ -32,13 +32,13 @@
import org.apache.myfaces.tobago.renderkit.html.HtmlConstants;
import org.apache.myfaces.tobago.renderkit.html.HtmlRendererUtil;
import org.apache.myfaces.tobago.webapp.TobagoResponseWriter;
+import org.apache.myfaces.tobago.util.FastStringWriter;
import javax.faces.component.NamingContainer;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.context.ResponseWriter;
import java.io.IOException;
-import java.io.StringWriter;
import java.util.List;
public class TreeRenderer extends LayoutableRendererBase {
@@ -173,7 +173,7 @@
protected String getNodesAsJavascript(FacesContext facesContext, UITreeNode root) throws IOException {
ResponseWriter writer = facesContext.getResponseWriter();
- StringWriter stringWriter = new StringWriter();
+ FastStringWriter stringWriter = new FastStringWriter();
facesContext.setResponseWriter(writer.cloneWithWriter(stringWriter));
RenderUtil.encode(facesContext, root);
facesContext.setResponseWriter(writer);
Modified: myfaces/tobago/trunk/theme/scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/MenuBarRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/theme/scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/MenuBarRenderer.java?rev=598637&r1=598636&r2=598637&view=diff
==============================================================================
--- myfaces/tobago/trunk/theme/scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/MenuBarRenderer.java (original)
+++ myfaces/tobago/trunk/theme/scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/MenuBarRenderer.java Tue Nov 27 05:35:26 2007
@@ -50,6 +50,7 @@
import org.apache.myfaces.tobago.renderkit.html.HtmlRendererUtil;
import org.apache.myfaces.tobago.renderkit.html.StyleClasses;
import org.apache.myfaces.tobago.util.AccessKeyMap;
+import org.apache.myfaces.tobago.util.FastStringWriter;
import org.apache.myfaces.tobago.webapp.TobagoResponseWriter;
import javax.faces.component.UICommand;
@@ -62,7 +63,6 @@
import javax.faces.context.ResponseWriter;
import javax.faces.model.SelectItem;
import java.io.IOException;
-import java.io.StringWriter;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -227,7 +227,7 @@
private String createMenuEntry(FacesContext facesContext, UIPanel uiPanel)
throws IOException {
ResponseWriter savedWriter = facesContext.getResponseWriter();
- StringWriter stringWriter = new StringWriter();
+ FastStringWriter stringWriter = new FastStringWriter();
ResponseWriter newWriter = savedWriter.cloneWithWriter(stringWriter);
facesContext.setResponseWriter(newWriter);
TobagoResponseWriter writer = HtmlRendererUtil.getTobagoResponseWriter(facesContext);
@@ -466,7 +466,7 @@
+ (disabled ? "disabled" : "enabled");
ResponseWriter savedWriter = facesContext.getResponseWriter();
- StringWriter stringWriter = new StringWriter();
+ FastStringWriter stringWriter = new FastStringWriter();
ResponseWriter newWriter = savedWriter.cloneWithWriter(stringWriter);
facesContext.setResponseWriter(newWriter);
TobagoResponseWriter writer = HtmlRendererUtil.getTobagoResponseWriter(facesContext);
Modified: myfaces/tobago/trunk/theme/scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/PageRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/theme/scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/PageRenderer.java?rev=598637&r1=598636&r2=598637&view=diff
==============================================================================
--- myfaces/tobago/trunk/theme/scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/PageRenderer.java (original)
+++ myfaces/tobago/trunk/theme/scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/PageRenderer.java Tue Nov 27 05:35:26 2007
@@ -31,12 +31,12 @@
import static org.apache.myfaces.tobago.TobagoConstants.ATTR_LABEL;
import static org.apache.myfaces.tobago.TobagoConstants.ATTR_METHOD;
import static org.apache.myfaces.tobago.TobagoConstants.ATTR_PAGE_MENU;
+import static org.apache.myfaces.tobago.TobagoConstants.ATTR_TARGET;
+import static org.apache.myfaces.tobago.TobagoConstants.ATTR_TRANSITION;
import static org.apache.myfaces.tobago.TobagoConstants.FACET_ACTION;
import static org.apache.myfaces.tobago.TobagoConstants.FACET_MENUBAR;
import static org.apache.myfaces.tobago.TobagoConstants.FORM_ACCEPT_CHARSET;
import static org.apache.myfaces.tobago.TobagoConstants.SUBCOMPONENT_SEP;
-import static org.apache.myfaces.tobago.TobagoConstants.ATTR_TARGET;
-import static org.apache.myfaces.tobago.TobagoConstants.ATTR_TRANSITION;
import org.apache.myfaces.tobago.component.ComponentUtil;
import org.apache.myfaces.tobago.component.UILayout;
import org.apache.myfaces.tobago.component.UIPage;
@@ -48,6 +48,7 @@
import org.apache.myfaces.tobago.renderkit.html.HtmlConstants;
import org.apache.myfaces.tobago.renderkit.html.HtmlRendererUtil;
import org.apache.myfaces.tobago.util.AccessKeyMap;
+import org.apache.myfaces.tobago.util.FastStringWriter;
import org.apache.myfaces.tobago.util.MimeTypeUtils;
import org.apache.myfaces.tobago.util.ResponseUtils;
import org.apache.myfaces.tobago.webapp.TobagoResponseWriter;
@@ -60,7 +61,6 @@
import javax.faces.context.FacesContext;
import javax.faces.context.ResponseWriter;
import java.io.IOException;
-import java.io.StringWriter;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
@@ -115,7 +115,7 @@
TobagoResponseWriter writer = HtmlRendererUtil.getTobagoResponseWriter(facesContext);
// replace responseWriter and render page content
- StringWriter content = new StringWriter();
+ FastStringWriter content = new FastStringWriter(1024*10);
ResponseWriter contentWriter = writer.cloneWithWriter(content);
facesContext.setResponseWriter(contentWriter);
@@ -131,7 +131,7 @@
// RenderUtil.encodeChildren(facesContext, page);
// render popups into buffer
- StringWriter popups = new StringWriter();
+ FastStringWriter popups = new FastStringWriter();
contentWriter = writer.cloneWithWriter(popups);
facesContext.setResponseWriter(contentWriter);
Modified: myfaces/tobago/trunk/theme/scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/TreeOldRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/theme/scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/TreeOldRenderer.java?rev=598637&r1=598636&r2=598637&view=diff
==============================================================================
--- myfaces/tobago/trunk/theme/scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/TreeOldRenderer.java (original)
+++ myfaces/tobago/trunk/theme/scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/TreeOldRenderer.java Tue Nov 27 05:35:26 2007
@@ -30,6 +30,7 @@
import org.apache.myfaces.tobago.renderkit.html.HtmlAttributes;
import org.apache.myfaces.tobago.renderkit.html.HtmlConstants;
import org.apache.myfaces.tobago.renderkit.html.HtmlRendererUtil;
+import org.apache.myfaces.tobago.util.FastStringWriter;
import org.apache.myfaces.tobago.webapp.TobagoResponseWriter;
import javax.faces.component.NamingContainer;
@@ -38,7 +39,6 @@
import javax.faces.context.FacesContext;
import javax.faces.context.ResponseWriter;
import java.io.IOException;
-import java.io.StringWriter;
import java.util.List;
import java.util.Map;
import java.util.StringTokenizer;
@@ -307,7 +307,7 @@
protected String getNodesAsJavascript(FacesContext facesContext, UITreeOldNode root) throws IOException {
ResponseWriter writer = facesContext.getResponseWriter();
- StringWriter stringWriter = new StringWriter();
+ FastStringWriter stringWriter = new FastStringWriter();
facesContext.setResponseWriter(writer.cloneWithWriter(stringWriter));
RenderUtil.encode(facesContext, root);
facesContext.setResponseWriter(writer);