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;