[gatein-commits] gatein SVN: r1668 - in portal/trunk: component/scripting/src/test/java/org/exoplatform/groovyscript and 5 other directories.
do-not-reply at jboss.org
do-not-reply at jboss.org
Fri Feb 12 22:41:19 EST 2010
Author: julien_viet
Date: 2010-02-12 22:41:18 -0500 (Fri, 12 Feb 2010)
New Revision: 1668
Modified:
portal/trunk/component/scripting/src/main/java/org/exoplatform/groovyscript/GroovyPrinter.java
portal/trunk/component/scripting/src/main/java/org/exoplatform/groovyscript/OutputStreamWriterGroovyPrinter.java
portal/trunk/component/scripting/src/main/java/org/exoplatform/groovyscript/WriterGroovyPrinter.java
portal/trunk/component/scripting/src/test/java/org/exoplatform/groovyscript/TestTemplateRendering.java
portal/trunk/component/scripting/src/test/resources/UIPortalApplication.gtmpl
portal/trunk/component/web/src/main/java/org/exoplatform/web/application/JavascriptManager.java
portal/trunk/component/web/src/main/java/org/exoplatform/web/application/javascript/JavascriptConfigService.java
portal/trunk/web/portal/src/main/webapp/groovy/portal/webui/workspace/UIPortalApplicationChildren.gtmpl
portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/workspace/UIPortalApplication.java
Log:
rewrite the inner of the JavascriptManager to use a List<String> instead of a StringBuilder providing less serialization and less object creation as the stream model can be optimized here
Modified: portal/trunk/component/scripting/src/main/java/org/exoplatform/groovyscript/GroovyPrinter.java
===================================================================
--- portal/trunk/component/scripting/src/main/java/org/exoplatform/groovyscript/GroovyPrinter.java 2010-02-13 03:23:56 UTC (rev 1667)
+++ portal/trunk/component/scripting/src/main/java/org/exoplatform/groovyscript/GroovyPrinter.java 2010-02-13 03:41:18 UTC (rev 1668)
@@ -104,6 +104,8 @@
}
}
+ protected abstract Writer getWriter();
+
protected abstract void write(char c) throws IOException;
protected abstract void write(String s) throws IOException;
Modified: portal/trunk/component/scripting/src/main/java/org/exoplatform/groovyscript/OutputStreamWriterGroovyPrinter.java
===================================================================
--- portal/trunk/component/scripting/src/main/java/org/exoplatform/groovyscript/OutputStreamWriterGroovyPrinter.java 2010-02-13 03:23:56 UTC (rev 1667)
+++ portal/trunk/component/scripting/src/main/java/org/exoplatform/groovyscript/OutputStreamWriterGroovyPrinter.java 2010-02-13 03:41:18 UTC (rev 1668)
@@ -23,6 +23,7 @@
import org.exoplatform.commons.utils.Text;
import java.io.IOException;
+import java.io.Writer;
import java.nio.charset.Charset;
/**
@@ -45,6 +46,12 @@
}
@Override
+ protected Writer getWriter()
+ {
+ return out;
+ }
+
+ @Override
protected void write(char c) throws IOException
{
out.write(c);
Modified: portal/trunk/component/scripting/src/main/java/org/exoplatform/groovyscript/WriterGroovyPrinter.java
===================================================================
--- portal/trunk/component/scripting/src/main/java/org/exoplatform/groovyscript/WriterGroovyPrinter.java 2010-02-13 03:23:56 UTC (rev 1667)
+++ portal/trunk/component/scripting/src/main/java/org/exoplatform/groovyscript/WriterGroovyPrinter.java 2010-02-13 03:41:18 UTC (rev 1668)
@@ -43,6 +43,12 @@
}
@Override
+ protected Writer getWriter()
+ {
+ return writer;
+ }
+
+ @Override
protected void write(char c) throws IOException
{
writer.write(c);
Modified: portal/trunk/component/scripting/src/test/java/org/exoplatform/groovyscript/TestTemplateRendering.java
===================================================================
--- portal/trunk/component/scripting/src/test/java/org/exoplatform/groovyscript/TestTemplateRendering.java 2010-02-13 03:23:56 UTC (rev 1667)
+++ portal/trunk/component/scripting/src/test/java/org/exoplatform/groovyscript/TestTemplateRendering.java 2010-02-13 03:41:18 UTC (rev 1668)
@@ -23,9 +23,7 @@
import org.exoplatform.commons.utils.OutputStreamPrinter;
import java.awt.*;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
+import java.io.*;
import java.util.EmptyStackException;
import java.util.HashMap;
import java.util.Map;
@@ -245,6 +243,17 @@
assertLineNumber(1, "throw new Exception('d')", "<%;%>foo" + prolog + "throw new Exception('d')%>");
}
+ public static Object out;
+
+ public void testWriterAccess() throws Exception
+ {
+ out = null;
+ Writer writer = new StringWriter();
+ GroovyTemplate template = new GroovyTemplate("<% " + TestTemplateRendering.class.getName() + ".out = out; %>");
+ template.render(writer);
+ assertNotNull(out);
+ }
+
private void assertLineNumber(int expectedLineNumber, String expectedText, String script) throws TemplateCompilationException, IOException
{
GroovyTemplate template = new GroovyTemplate(script);
Modified: portal/trunk/component/scripting/src/test/resources/UIPortalApplication.gtmpl
===================================================================
--- portal/trunk/component/scripting/src/test/resources/UIPortalApplication.gtmpl 2010-02-13 03:23:56 UTC (rev 1667)
+++ portal/trunk/component/scripting/src/test/resources/UIPortalApplication.gtmpl 2010-02-13 03:41:18 UTC (rev 1668)
@@ -125,9 +125,9 @@
<script type="text/javascript">
- <%=rcontext.getJavascriptManager().getJavascript()%>
+ <% rcontext.getJavascriptManager().writeJavascript(out.writer) %>
eXo.core.Browser.onLoad();
- <%=rcontext.getJavascriptManager().getCustomizedOnLoadScript();%>
+ <% rcontext.getJavascriptManager().writeCustomizedOnLoadScript(out.writer); %>
<%if(canKeepState && uicomponent.isSessionOpen) {%> eXo.session.itvInit() ;<%}%>
</script>
</body>
Modified: portal/trunk/component/web/src/main/java/org/exoplatform/web/application/JavascriptManager.java
===================================================================
--- portal/trunk/component/web/src/main/java/org/exoplatform/web/application/JavascriptManager.java 2010-02-13 03:23:56 UTC (rev 1667)
+++ portal/trunk/component/web/src/main/java/org/exoplatform/web/application/JavascriptManager.java 2010-02-13 03:41:18 UTC (rev 1668)
@@ -23,6 +23,10 @@
import org.exoplatform.container.ExoContainerContext;
import org.exoplatform.web.application.javascript.JavascriptConfigService;
+import java.io.IOException;
+import java.io.Writer;
+import java.util.ArrayList;
+
/**
* Created by The eXo Platform SAS
* Mar 27, 2007
@@ -30,10 +34,13 @@
public class JavascriptManager
{
- private StringBuilder javascript = new StringBuilder(1000);
+ /** . */
+ private ArrayList<String> data = new ArrayList<String>(100);
- private StringBuilder customizedOnloadJavascript;
+ /** . */
+ private ArrayList<String> customizedOnloadJavascript = null;
+ /** . */
private JavascriptConfigService jsSrevice_;
public JavascriptManager()
@@ -45,61 +52,115 @@
public void addJavascript(CharSequence s)
{
- javascript.append(s).append(" \n");
+ if (s != null)
+ {
+ data.add(s instanceof String ? (String)s : s.toString());
+ data.add(" \n");
+ }
}
public void importJavascript(CharSequence s)
{
- if (!jsSrevice_.isModuleLoaded(s) || PropertyManager.isDevelopping())
+ if (s != null)
{
- javascript.append("eXo.require('").append(s).append("'); \n");
+ if (!jsSrevice_.isModuleLoaded(s) || PropertyManager.isDevelopping())
+ {
+ data.add("eXo.require('");
+ data.add(s instanceof String ? (String)s : s.toString());
+ data.add("'); \n");
+ }
}
}
public void importJavascript(String s, String location)
{
- if (!location.endsWith("/"))
- location = location + '/';
- if (!jsSrevice_.isModuleLoaded(s) || PropertyManager.isDevelopping())
+ if (s != null && location != null)
{
- javascript.append("eXo.require('").append(s).append("', '").append(location).append("'); \n");
+ if (!jsSrevice_.isModuleLoaded(s) || PropertyManager.isDevelopping())
+ {
+ data.add("eXo.require('");
+ data.add(s);
+ data.add("', '");
+ data.add(location);
+ if (!location.endsWith("/"))
+ {
+ data.add("/");
+ }
+ data.add("', '");
+ }
}
}
public void addOnLoadJavascript(CharSequence s)
{
- String id = Integer.toString(Math.abs(s.hashCode()));
- javascript.append("eXo.core.Browser.addOnLoadCallback('mid").append(id).append("',").append(s).append("); \n");
+ if (s != null)
+ {
+ String id = Integer.toString(Math.abs(s.hashCode()));
+ data.add("eXo.core.Browser.addOnLoadCallback('mid");
+ data.add(id);
+ data.add("',");
+ data.add(s instanceof String ? (String)s : s.toString());
+ data.add("); \n");
+ }
}
public void addOnResizeJavascript(CharSequence s)
{
- String id = Integer.toString(Math.abs(s.hashCode()));
- javascript.append("eXo.core.Browser.addOnResizeCallback('mid").append(id).append("',").append(s).append("); \n");
+ if (s != null)
+ {
+ String id = Integer.toString(Math.abs(s.hashCode()));
+ data.add("eXo.core.Browser.addOnResizeCallback('mid");
+ data.add(id);
+ data.add("',");
+ data.add(s instanceof String ? (String)s : s.toString());
+ data.add("); \n");
+ }
}
public void addOnScrollJavascript(CharSequence s)
{
- String id = Integer.toString(Math.abs(s.hashCode()));
- javascript.append("eXo.core.Browser.addOnScrollCallback('mid").append(id).append("',").append(s).append("); \n");
+ if (s != null)
+ {
+ String id = Integer.toString(Math.abs(s.hashCode()));
+ data.add("eXo.core.Browser.addOnScrollCallback('mid");
+ data.add(id);
+ data.add("',");
+ data.add(s instanceof String ? (String)s : s.toString());
+ data.add("); \n");
+ }
}
- public String getJavascript()
+ public void writeJavascript(Writer writer) throws IOException
{
- return javascript.toString();
+ for (int i = 0;i < data.size();i++)
+ {
+ String s = data.get(i);
+ writer.write(s);
+ }
}
public void addCustomizedOnLoadScript(CharSequence s)
{
- if (customizedOnloadJavascript == null)
- customizedOnloadJavascript = new StringBuilder();
- customizedOnloadJavascript.append(s).append("\n");
+ if (s != null)
+ {
+ if (customizedOnloadJavascript == null)
+ {
+ customizedOnloadJavascript = new ArrayList<String>(30);
+ }
+ customizedOnloadJavascript.add(s instanceof String ? (String)s : s.toString());
+ customizedOnloadJavascript.add("\n");
+ }
}
- public String getCustomizedOnLoadScript()
+ public void writeCustomizedOnLoadScript(Writer writer) throws IOException
{
- if (customizedOnloadJavascript == null)
- return "";
- return customizedOnloadJavascript.toString();
+ if (customizedOnloadJavascript != null)
+ {
+ for (int i = 0;i < customizedOnloadJavascript.size();i++)
+ {
+ String s = customizedOnloadJavascript.get(i);
+ writer.write(s);
+ }
+ }
}
}
Modified: portal/trunk/component/web/src/main/java/org/exoplatform/web/application/javascript/JavascriptConfigService.java
===================================================================
--- portal/trunk/component/web/src/main/java/org/exoplatform/web/application/javascript/JavascriptConfigService.java 2010-02-13 03:23:56 UTC (rev 1667)
+++ portal/trunk/component/web/src/main/java/org/exoplatform/web/application/javascript/JavascriptConfigService.java 2010-02-13 03:41:18 UTC (rev 1668)
@@ -230,12 +230,13 @@
{
allJavascript.append(script);
}
+ String s = allJavascript.toString();
// Get bytes
byte[] bytes;
try
{
- bytes = allJavascript.toString().getBytes("UTF-8");
+ bytes = s.getBytes("UTF-8");
}
catch (UnsupportedEncodingException e)
{
Modified: portal/trunk/web/portal/src/main/webapp/groovy/portal/webui/workspace/UIPortalApplicationChildren.gtmpl
===================================================================
--- portal/trunk/web/portal/src/main/webapp/groovy/portal/webui/workspace/UIPortalApplicationChildren.gtmpl 2010-02-13 03:23:56 UTC (rev 1667)
+++ portal/trunk/web/portal/src/main/webapp/groovy/portal/webui/workspace/UIPortalApplicationChildren.gtmpl 2010-02-13 03:41:18 UTC (rev 1668)
@@ -25,9 +25,11 @@
<%uicomponent.renderChildren();%>
</div>
<script type="text/javascript">
- <%=rcontext.getJavascriptManager().getJavascript()%>
+
+ <%rcontext.getJavascriptManager().writeJavascript(out.writer)%>
+
eXo.core.Browser.onLoad();
- <%=rcontext.getJavascriptManager().getCustomizedOnLoadScript();%>
+ <% rcontext.getJavascriptManager().writeCustomizedOnLoadScript(out.writer); %>
<%if(canKeepState && uicomponent.isSessionOpen) {%> eXo.session.itvInit() ;<%}%>
</script>
</body>
Modified: portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/workspace/UIPortalApplication.java
===================================================================
--- portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/workspace/UIPortalApplication.java 2010-02-13 03:23:56 UTC (rev 1667)
+++ portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/workspace/UIPortalApplication.java 2010-02-13 03:41:18 UTC (rev 1668)
@@ -602,9 +602,9 @@
}
w.write("<div class=\"PortalResponseScript\">");
- w.write(pcontext.getJavascriptManager().getJavascript());
+ pcontext.getJavascriptManager().writeJavascript(w);
w.write("eXo.core.Browser.onLoad();\n");
- w.write(pcontext.getJavascriptManager().getCustomizedOnLoadScript());
+ pcontext.getJavascriptManager().writeCustomizedOnLoadScript(w);
String skin = getAddSkinScript(list);
if (skin != null)
{
More information about the gatein-commits
mailing list