Author: pete Date: Tue Nov 16 18:34:36 2010 New Revision: 1035732 URL: http://svn.apache.org/viewvc?rev=1035732&view=rev Log: WICKET-3167: fix type hierarchy
Modified: wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/velocity/DynamicPage.java wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/velocity/TemplatePage.java wicket/trunk/wicket-util/src/main/java/org/apache/wicket/util/resource/AbstractResourceStream.java wicket/trunk/wicket-util/src/main/java/org/apache/wicket/util/resource/AbstractStringResourceStream.java wicket/trunk/wicket-velocity/src/main/java/org/apache/wicket/velocity/markup/html/VelocityPanel.java wicket/trunk/wicket-velocity/src/test/java/org/apache/wicket/contrib/markup/html/velocity/VelocityWithMarkupParsingPage.java wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/include/Include.java wicket/trunk/wicket/src/main/java/org/apache/wicket/resource/ResourceUtil.java wicket/trunk/wicket/src/main/java/org/apache/wicket/util/resource/UrlResourceStream.java Modified: wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/velocity/DynamicPage.java URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/velocity/DynamicPage.java?rev=1035732&r1=1035731&r2=1035732&view=diff ============================================================================== --- wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/velocity/DynamicPage.java (original) +++ wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/velocity/DynamicPage.java Tue Nov 16 18:34:36 2010 @@ -24,6 +24,7 @@ import org.apache.wicket.examples.Wicket import org.apache.wicket.markup.html.form.TextField; import org.apache.wicket.model.util.MapModel; import org.apache.wicket.request.mapper.parameter.PageParameters; +import org.apache.wicket.util.resource.IResourceStream; import org.apache.wicket.util.resource.IStringResourceStream; import org.apache.wicket.util.resource.PackageResourceStream; import org.apache.wicket.velocity.markup.html.VelocityPanel; @@ -43,7 +44,7 @@ public class DynamicPage extends WicketE */ public DynamicPage(final PageParameters parameters) { - final IStringResourceStream template = new PackageResourceStream(DynamicPage.class, + final IResourceStream template = new PackageResourceStream(DynamicPage.class, "fields.vm"); Map<String, List<Field>> map = new HashMap<String, List<Field>>(); @@ -54,7 +55,7 @@ public class DynamicPage extends WicketE add(panel = new VelocityPanel("templatePanel", new MapModel<String, List<Field>>(map)) { @Override - protected IStringResourceStream getTemplateResource() + protected IResourceStream getTemplateResource() { return template; } Modified: wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/velocity/TemplatePage.java URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/velocity/TemplatePage.java?rev=1035732&r1=1035731&r2=1035732&view=diff ============================================================================== --- wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/velocity/TemplatePage.java (original) +++ wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/velocity/TemplatePage.java Tue Nov 16 18:34:36 2010 @@ -28,6 +28,8 @@ import org.apache.wicket.model.IModel; import org.apache.wicket.model.Model; import org.apache.wicket.model.PropertyModel; import org.apache.wicket.request.mapper.parameter.PageParameters; +import org.apache.wicket.resource.ResourceUtil; +import org.apache.wicket.util.resource.IResourceStream; import org.apache.wicket.util.resource.IStringResourceStream; import org.apache.wicket.util.resource.PackageResourceStream; import org.apache.wicket.util.resource.StringResourceStream; @@ -71,8 +73,7 @@ public class TemplatePage extends Wicket } /** the current template contents. */ - private IStringResourceStream template = new PackageResourceStream(DynamicPage.class, - "persons.vm"); + private IResourceStream template = new PackageResourceStream(DynamicPage.class, "persons.vm"); /** context to be used by the template. */ private final IModel<Map<String, List<Person>>> templateContext; @@ -93,7 +94,7 @@ public class TemplatePage extends Wicket add(new VelocityPanel("templatePanel", templateContext) { @Override - protected IStringResourceStream getTemplateResource() + protected IResourceStream getTemplateResource() { return template; } @@ -108,7 +109,7 @@ public class TemplatePage extends Wicket */ public final String getTemplate() { - return template.asString(); + return ResourceUtil.readString(template); } /** Modified: wicket/trunk/wicket-util/src/main/java/org/apache/wicket/util/resource/AbstractResourceStream.java URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-util/src/main/java/org/apache/wicket/util/resource/AbstractResourceStream.java?rev=1035732&r1=1035731&r2=1035732&view=diff ============================================================================== --- wicket/trunk/wicket-util/src/main/java/org/apache/wicket/util/resource/AbstractResourceStream.java (original) +++ wicket/trunk/wicket-util/src/main/java/org/apache/wicket/util/resource/AbstractResourceStream.java Tue Nov 16 18:34:36 2010 @@ -16,14 +16,8 @@ */ package org.apache.wicket.util.resource; -import java.io.IOException; -import java.io.InputStreamReader; -import java.io.Reader; -import java.nio.charset.Charset; import java.util.Locale; -import org.apache.wicket.util.io.IOUtils; -import org.apache.wicket.util.io.Streams; import org.apache.wicket.util.time.Time; @@ -32,77 +26,15 @@ import org.apache.wicket.util.time.Time; * * @author Jonathan Locke */ -public abstract class AbstractResourceStream implements IStringResourceStream +public abstract class AbstractResourceStream implements IResourceStream { private static final long serialVersionUID = 1L; - /** Charset for resource */ - private Charset charset; private Locale locale; private String style; private String variation; /** - * Sets the character set used for reading this resource. - * - * @param charset - * Charset for component - */ - public void setCharset(final Charset charset) - { - this.charset = charset; - } - - /** - * @return This resource as a String. - */ - public String asString() - { - Reader reader = null; - try - { - if (charset == null) - { - reader = new InputStreamReader(getInputStream()); - } - else - { - reader = new InputStreamReader(getInputStream(), charset); - } - return Streams.readString(reader); - } - catch (IOException e) - { - throw new RuntimeException("Unable to read resource as String", e); - } - catch (ResourceStreamNotFoundException e) - { - throw new RuntimeException("Unable to read resource as String", e); - } - finally - { - IOUtils.closeQuietly(reader); - try - { - close(); - } - catch (IOException e) - { - // ignore - } - } - } - - /** - * @return Charset for resource - */ - protected Charset getCharset() - { - return charset; - } - - - /** * @see org.apache.wicket.util.resource.IResourceStream#getLocale() */ public Locale getLocale() Modified: wicket/trunk/wicket-util/src/main/java/org/apache/wicket/util/resource/AbstractStringResourceStream.java URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-util/src/main/java/org/apache/wicket/util/resource/AbstractStringResourceStream.java?rev=1035732&r1=1035731&r2=1035732&view=diff ============================================================================== --- wicket/trunk/wicket-util/src/main/java/org/apache/wicket/util/resource/AbstractStringResourceStream.java (original) +++ wicket/trunk/wicket-util/src/main/java/org/apache/wicket/util/resource/AbstractStringResourceStream.java Tue Nov 16 18:34:36 2010 @@ -19,8 +19,13 @@ package org.apache.wicket.util.resource; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.Reader; import java.io.UnsupportedEncodingException; +import java.nio.charset.Charset; +import org.apache.wicket.util.io.IOUtils; +import org.apache.wicket.util.io.Streams; import org.apache.wicket.util.string.Strings; import org.apache.wicket.util.time.Time; @@ -30,13 +35,16 @@ import org.apache.wicket.util.time.Time; * * @author Jonathan Locke */ -public abstract class AbstractStringResourceStream extends AbstractResourceStream +public abstract class AbstractStringResourceStream extends AbstractResourceStream implements IStringResourceStream { private static final long serialVersionUID = 1L; /** The content-type applied in case the resource stream's default constructor is used */ public static final String DEFAULT_CONTENT_TYPE = "text"; + /** Charset for resource */ + private Charset charset; + /** MIME content type */ private final String contentType; @@ -64,6 +72,65 @@ public abstract class AbstractStringReso } /** + * @return This resource as a String. + */ + public String asString() + { + Reader reader = null; + try + { + if (charset == null) + { + reader = new InputStreamReader(getInputStream()); + } + else + { + reader = new InputStreamReader(getInputStream(), charset); + } + return Streams.readString(reader); + } + catch (IOException e) + { + throw new RuntimeException("Unable to read resource as String", e); + } + catch (ResourceStreamNotFoundException e) + { + throw new RuntimeException("Unable to read resource as String", e); + } + finally + { + IOUtils.closeQuietly(reader); + try + { + close(); + } + catch (IOException e) + { + // ignore + } + } + } + + /** + * @return Charset for resource + */ + protected Charset getCharset() + { + return charset; + } + + /** + * Sets the character set used for reading this resource. + * + * @param charset + * Charset for component + */ + public void setCharset(final Charset charset) + { + this.charset = charset; + } + + /** * @see org.apache.wicket.util.resource.IResourceStream#close() */ public void close() throws IOException Modified: wicket/trunk/wicket-velocity/src/main/java/org/apache/wicket/velocity/markup/html/VelocityPanel.java URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-velocity/src/main/java/org/apache/wicket/velocity/markup/html/VelocityPanel.java?rev=1035732&r1=1035731&r2=1035732&view=diff ============================================================================== --- wicket/trunk/wicket-velocity/src/main/java/org/apache/wicket/velocity/markup/html/VelocityPanel.java (original) +++ wicket/trunk/wicket-velocity/src/main/java/org/apache/wicket/velocity/markup/html/VelocityPanel.java Tue Nov 16 18:34:36 2010 @@ -35,6 +35,7 @@ import org.apache.wicket.markup.IMarkupR import org.apache.wicket.markup.MarkupStream; import org.apache.wicket.markup.html.panel.Panel; import org.apache.wicket.model.IModel; +import org.apache.wicket.resource.ResourceUtil; import org.apache.wicket.util.resource.IResourceStream; import org.apache.wicket.util.resource.IStringResourceStream; import org.apache.wicket.util.resource.StringResourceStream; @@ -73,7 +74,7 @@ public abstract class VelocityPanel exte * @return an instance of {...@link VelocityPanel} */ public static VelocityPanel forTemplateResource(String id, IModel< ? extends Map> model, - final IStringResourceStream templateResource) + final IResourceStream templateResource) { if (templateResource == null) { @@ -85,7 +86,7 @@ public abstract class VelocityPanel exte private static final long serialVersionUID = 1L; @Override - protected IStringResourceStream getTemplateResource() + protected IResourceStream getTemplateResource() { return templateResource; } @@ -117,13 +118,13 @@ public abstract class VelocityPanel exte */ private Reader getTemplateReader() { - final IStringResourceStream resource = getTemplateResource(); + final IResourceStream resource = getTemplateResource(); if (resource == null) { throw new IllegalArgumentException("getTemplateResource must return a resource"); } - final String template = resource.asString(); + final String template = ResourceUtil.readString(resource); if (template != null) { return new StringReader(template); @@ -209,7 +210,7 @@ public abstract class VelocityPanel exte * * @return The template resource */ - protected abstract IStringResourceStream getTemplateResource(); + protected abstract IResourceStream getTemplateResource(); /** * Evaluates the template and returns the result. Modified: wicket/trunk/wicket-velocity/src/test/java/org/apache/wicket/contrib/markup/html/velocity/VelocityWithMarkupParsingPage.java URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-velocity/src/test/java/org/apache/wicket/contrib/markup/html/velocity/VelocityWithMarkupParsingPage.java?rev=1035732&r1=1035731&r2=1035732&view=diff ============================================================================== --- wicket/trunk/wicket-velocity/src/test/java/org/apache/wicket/contrib/markup/html/velocity/VelocityWithMarkupParsingPage.java (original) +++ wicket/trunk/wicket-velocity/src/test/java/org/apache/wicket/contrib/markup/html/velocity/VelocityWithMarkupParsingPage.java Tue Nov 16 18:34:36 2010 @@ -22,6 +22,7 @@ import org.apache.wicket.markup.Componen import org.apache.wicket.markup.html.WebPage; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.model.Model; +import org.apache.wicket.util.resource.IResourceStream; import org.apache.wicket.util.resource.IStringResourceStream; import org.apache.wicket.util.resource.UrlResourceStream; import org.apache.wicket.velocity.markup.html.VelocityPanel; @@ -46,7 +47,7 @@ public class VelocityWithMarkupParsingPa private static final long serialVersionUID = 1L; @Override - protected IStringResourceStream getTemplateResource() + protected IResourceStream getTemplateResource() { return new UrlResourceStream(getClass().getResource("testWithMarkup.html")); } Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/include/Include.java URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/include/Include.java?rev=1035732&r1=1035731&r2=1035732&view=diff ============================================================================== --- wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/include/Include.java (original) +++ wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/include/Include.java Tue Nov 16 18:34:36 2010 @@ -29,6 +29,7 @@ import org.apache.wicket.markup.html.Web import org.apache.wicket.model.IModel; import org.apache.wicket.model.Model; import org.apache.wicket.protocol.http.servlet.ServletWebRequest; +import org.apache.wicket.resource.ResourceUtil; import org.apache.wicket.util.resource.UrlResourceStream; @@ -272,13 +273,6 @@ public class Include extends WebComponen */ private final String importUrl(URL url) { - UrlResourceStream resourceStream = new UrlResourceStream(url); - Charset charset = getCharset(); - if (charset != null) - { - resourceStream.setCharset(charset); - } - String content = resourceStream.asString(); - return content; + return ResourceUtil.readString(new UrlResourceStream(url), getCharset()); } } Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/resource/ResourceUtil.java URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/resource/ResourceUtil.java?rev=1035732&r1=1035731&r2=1035732&view=diff ============================================================================== --- wicket/trunk/wicket/src/main/java/org/apache/wicket/resource/ResourceUtil.java (original) +++ wicket/trunk/wicket/src/main/java/org/apache/wicket/resource/ResourceUtil.java Tue Nov 16 18:34:36 2010 @@ -16,8 +16,16 @@ */ package org.apache.wicket.resource; +import java.io.IOException; +import java.io.InputStream; +import java.nio.charset.Charset; + +import org.apache.wicket.WicketRuntimeException; import org.apache.wicket.markup.html.IHeaderResponse; import org.apache.wicket.request.resource.ResourceReference; +import org.apache.wicket.util.io.IOUtils; +import org.apache.wicket.util.resource.IResourceStream; +import org.apache.wicket.util.resource.ResourceStreamNotFoundException; import org.apache.wicket.util.string.Strings; /** @@ -72,4 +80,51 @@ public class ResourceUtil } } } + + /** + * read string with platform default encoding from resource stream + * + * @see #readString(org.apache.wicket.util.resource.IResourceStream, java.nio.charset.Charset) + */ + public static String readString(IResourceStream resourceStream) + { + return readString(resourceStream, null); + } + + /** + * read string with specified encoding from resource stream + * + * @param resourceStream string source + * @param charset charset for the string encoding (use <code>null</code> for platform default) + * @return string read from resource stream + */ + public static String readString(IResourceStream resourceStream, Charset charset) + { + try + { + InputStream stream = resourceStream.getInputStream(); + + try + { + byte[] bytes = IOUtils.toByteArray(stream); + + if (charset == null) + charset = Charset.defaultCharset(); + + return new String(bytes, charset); + } + finally + { + resourceStream.close(); + } + } + catch (IOException e) + { + throw new WicketRuntimeException("failed to read string from " + resourceStream, e); + } + catch (ResourceStreamNotFoundException e) + { + throw new WicketRuntimeException("failed to locate stream from " + resourceStream, e); + } + } } Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/util/resource/UrlResourceStream.java URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/util/resource/UrlResourceStream.java?rev=1035732&r1=1035731&r2=1035732&view=diff ============================================================================== --- wicket/trunk/wicket/src/main/java/org/apache/wicket/util/resource/UrlResourceStream.java (original) +++ wicket/trunk/wicket/src/main/java/org/apache/wicket/util/resource/UrlResourceStream.java Tue Nov 16 18:34:36 2010 @@ -33,15 +33,13 @@ import org.slf4j.LoggerFactory; /** * UrlResourceStream implements IResource for URLs. - * + * * @see org.apache.wicket.util.resource.IResourceStream * @see org.apache.wicket.util.watch.IModifiable * @author Jonathan Locke * @author Igor Vaynberg */ -public class UrlResourceStream extends AbstractResourceStream - implements - IFixedLocationResourceStream +public class UrlResourceStream extends AbstractResourceStream implements IFixedLocationResourceStream { private static final long serialVersionUID = 1L; @@ -68,7 +66,7 @@ public class UrlResourceStream extends A /** * Construct. - * + * * @param url * URL of resource */ @@ -113,7 +111,7 @@ public class UrlResourceStream extends A /** * Closes this resource. - * + * * @throws IOException */ public void close() throws IOException