[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