You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by bu...@apache.org on 2001/12/21 19:49:49 UTC

DO NOT REPLY [Bug 5560] New: - Removal of unnecesary white space in output

DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=5560>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=5560

Removal of unnecesary white space in output

           Summary: Removal of unnecesary white space in output
           Product: Tomcat 3
           Version: 3.3 Final
          Platform: Other
        OS/Version: Windows NT/2K
            Status: NEW
          Severity: Enhancement
          Priority: Other
         Component: Jasper
        AssignedTo: tomcat-dev@jakarta.apache.org
        ReportedBy: cesarbv@hotmail.com


Hi. I don't know if this kind of stuff should be done in here, but here it is.

We use tomcat to serve our portal, and lots of unnecesary white space are 
served to the browser (line feeds, tabs, spaces), which increases size of pages 
and thus makes site slow on modems.

I modified org.apache.jasper.compiler.CharDataMapper.generateChunk (and 
MappedCharDataMapper.generateChunk) to remove them at Jasper compilation time. 
The new method looks like:


	private void generateChunk(ServletWriter writer, int from, int to)
	{
		// Generate the char data:
		int limit;
		int lastChar;
		StringBuffer sb;
		
		sb = new StringBuffer();
		limit = chars.length;
		lastChar = 0;
		for (int i = 0; i < limit; i++)
		{
			int ch = chars[i];
			switch (ch)
			{
				case '"' :
					sb.append("\\\"");
					break;
				case '\\' :
					sb.append("\\\\");
					break;
				case '\r' :
					ch = '\n';
				case '\n' :
					if ( '\n' != lastChar )
					{
						sb.append("\\r\\n");
					}
					break;
				case ' ' :
					if ( ! isBlank(lastChar) )
					{
						sb.append(" ");
					}
					break;
				case '\t' :
					if ( ! isBlank(lastChar) )
					{
						sb.append("\\t");
					}
					break;
					
				default :
					sb.append((char) ch);
			}
			
			lastChar = ch;
		}

		if ( 0 < sb.length() )
		{
			writer.indent();
			writer.print("out.write(\"");
			writer.print(sb.toString());
			writer.print("\");\n");
		}
	}

	protected static boolean isBlank(int ch)
	{
		return (' ' == ch) || ('\t' == ch) || ('\n' == ch);
	}


This reduces our page sizes by 3-4K

Just to let you know

Thks

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>