You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by pa...@apache.org on 2013/10/28 09:16:56 UTC

[40/47] git commit: WICKET-5374 don't let XhtmlRenderer use a StringBufferInputStream, as it fails on non-ASCII characters

WICKET-5374 don't let XhtmlRenderer use a StringBufferInputStream, as it
fails on non-ASCII characters

Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/28cac719
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/28cac719
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/28cac719

Branch: refs/heads/wicket-4997
Commit: 28cac7193fe84790dc890937404f739c19927eda
Parents: dd336fe
Author: svenmeier <sv...@meiers.net>
Authored: Thu Sep 26 11:54:16 2013 +0200
Committer: svenmeier <sv...@meiers.net>
Committed: Thu Sep 26 11:54:16 2013 +0200

----------------------------------------------------------------------
 .../wicket/examples/source/SourcesPage.java     | 52 ++++++++++----------
 1 file changed, 26 insertions(+), 26 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/28cac719/wicket-examples/src/main/java/org/apache/wicket/examples/source/SourcesPage.java
----------------------------------------------------------------------
diff --git a/wicket-examples/src/main/java/org/apache/wicket/examples/source/SourcesPage.java b/wicket-examples/src/main/java/org/apache/wicket/examples/source/SourcesPage.java
index 6b0d1dc..c9f28f4 100644
--- a/wicket-examples/src/main/java/org/apache/wicket/examples/source/SourcesPage.java
+++ b/wicket-examples/src/main/java/org/apache/wicket/examples/source/SourcesPage.java
@@ -16,11 +16,10 @@
  */
 package org.apache.wicket.examples.source;
 
-import java.io.BufferedReader;
+import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
-import java.io.InputStreamReader;
 import java.net.JarURLConnection;
 import java.net.URI;
 import java.net.URISyntaxException;
@@ -33,8 +32,6 @@ import java.util.List;
 import java.util.jar.JarEntry;
 import java.util.jar.JarFile;
 
-import com.uwyn.jhighlight.renderer.Renderer;
-import com.uwyn.jhighlight.renderer.XhtmlRendererFactory;
 import org.apache.wicket.Component;
 import org.apache.wicket.Page;
 import org.apache.wicket.WicketRuntimeException;
@@ -55,10 +52,15 @@ import org.apache.wicket.request.http.handler.ErrorCodeRequestHandler;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
 import org.apache.wicket.util.io.IOUtils;
 import org.apache.wicket.util.lang.PackageName;
-import org.apache.wicket.util.string.*;
+import org.apache.wicket.util.string.AppendingStringBuffer;
+import org.apache.wicket.util.string.StringValue;
+import org.apache.wicket.util.string.Strings;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import com.uwyn.jhighlight.renderer.Renderer;
+import com.uwyn.jhighlight.renderer.XhtmlRendererFactory;
+
 /**
  * Displays the resources in a packages directory in a browsable format.
  * 
@@ -88,24 +90,17 @@ public class SourcesPage extends WebPage
 				return "";
 			}
 
-			BufferedReader br = null;
 			String source = null;
+			InputStream resourceAsStream = null;
 			try
 			{
-			    StringBuilder sb = new StringBuilder();
 				source = (name != null) ? name : sourceParam.toString();
-				InputStream resourceAsStream = getPageTargetClass().getResourceAsStream(source);
+				resourceAsStream = getPageTargetClass().getResourceAsStream(source);
 				if (resourceAsStream == null)
 				{
 					return "Unable to read the source for " + source;
 				}
-				br = new BufferedReader(new InputStreamReader(resourceAsStream));
 
-				while (br.ready())
-				{
-					sb.append(br.readLine());
-					sb.append('\n');
-				}
 				int lastDot = source.lastIndexOf('.');
 				if (lastDot != -1)
 				{
@@ -113,10 +108,14 @@ public class SourcesPage extends WebPage
 					Renderer renderer = XhtmlRendererFactory.getRenderer(type);
 					if (renderer != null)
 					{
-						return renderer.highlight(source, sb.toString(), "UTF-8", true);
+						ByteArrayOutputStream output = new ByteArrayOutputStream();
+						renderer.highlight(source, resourceAsStream, output, "UTF-8", true);
+						return output.toString("UTF-8");
 					}
 				}
-				CharSequence escaped = Strings.escapeMarkup(sb.toString(), false, true);
+
+				CharSequence escaped = Strings.escapeMarkup(IOUtils.toString(resourceAsStream),
+					false, true);
 				return Strings.replaceAll(escaped, "\n", "<br />").toString();
 			}
 			catch (IOException e)
@@ -128,7 +127,7 @@ public class SourcesPage extends WebPage
 			}
 			finally
 			{
-				IOUtils.closeQuietly(br);
+				IOUtils.closeQuietly(resourceAsStream);
 			}
 		}
 	}
@@ -149,15 +148,16 @@ public class SourcesPage extends WebPage
 			return get(getPageTargetClass());
 		}
 
-		private final void addResources(final AppendingStringBuffer relativePath, final File dir, List<String> resources)
+		private final void addResources(final AppendingStringBuffer relativePath, final File dir,
+			List<String> resources)
 		{
 			File[] files = dir.listFiles();
 			for (File file : files)
 			{
 				if (file.isDirectory())
 				{
-					addResources(new AppendingStringBuffer(relativePath).append(file.getName()).append('/'),
-						file, resources);
+					addResources(new AppendingStringBuffer(relativePath).append(file.getName())
+						.append('/'), file, resources);
 				}
 				else
 				{
@@ -307,16 +307,16 @@ public class SourcesPage extends WebPage
 						@Override
 						protected CharSequence getURL()
 						{
-							return urlFor(SourcesPage.class,
-								          SourcesPage.generatePageParameters(getPageTargetClass(),
-									      item.getModel().getObject()));
+							return urlFor(SourcesPage.class, SourcesPage.generatePageParameters(
+								getPageTargetClass(), item.getModel().getObject()));
 						}
 
 						@Override
 						protected void updateAjaxAttributes(AjaxRequestAttributes attributes)
 						{
 							super.updateAjaxAttributes(attributes);
-							AjaxCallListener ajaxCallListener = new AjaxCallListener() {
+							AjaxCallListener ajaxCallListener = new AjaxCallListener()
+							{
 								@Override
 								public CharSequence getFailureHandler(Component component)
 								{
@@ -489,8 +489,8 @@ public class SourcesPage extends WebPage
 			if (page == null)
 			{
 				getRequestCycle().replaceAllRequestHandlers(
-						new ErrorCodeRequestHandler(404,
-								"Could not find sources for the page you requested"));
+					new ErrorCodeRequestHandler(404,
+						"Could not find sources for the page you requested"));
 			}
 		}
 		return page;