You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by hl...@apache.org on 2012/11/02 19:13:58 UTC
[3/3] git commit: Simplify/share code for VirtualResources
Simplify/share code for VirtualResources
Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo
Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/e9651b5b
Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/e9651b5b
Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/e9651b5b
Branch: refs/heads/5.4-js-rewrite
Commit: e9651b5b1c755406dd4b54c3160c2cd800a9dea0
Parents: 25a9b92
Author: Howard M. Lewis Ship <hl...@apache.org>
Authored: Fri Nov 2 10:50:46 2012 -0700
Committer: Howard M. Lewis Ship <hl...@apache.org>
Committed: Fri Nov 2 10:50:46 2012 -0700
----------------------------------------------------------------------
.../messages/DecimalFormatMessageResource.java | 7 +----
.../internal/util/MessageCatalogResource.java | 17 +++-----------
.../tapestry5/internal/util/VirtualResource.java | 16 ++++++++++++++
3 files changed, 22 insertions(+), 18 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/e9651b5b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/messages/DecimalFormatMessageResource.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/messages/DecimalFormatMessageResource.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/messages/DecimalFormatMessageResource.java
index 070d167..c977418 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/messages/DecimalFormatMessageResource.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/messages/DecimalFormatMessageResource.java
@@ -17,7 +17,6 @@ package org.apache.tapestry5.internal.services.messages;
import org.apache.tapestry5.internal.util.VirtualResource;
import org.apache.tapestry5.ioc.Resource;
-import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
@@ -53,7 +52,7 @@ public class DecimalFormatMessageResource extends VirtualResource
@Override
public String getPath()
{
- return String.format("<Virtual DecimalFormat symbols for %s>", locale);
+ return String.format("<Virtual DecimalFormat symbols for locale %s>", locale == null ? "(none)" : locale);
}
@Override
@@ -85,9 +84,7 @@ public class DecimalFormatMessageResource extends VirtualResource
write(builder, "minus", symbols.getMinusSign());
write(builder, "decimal", symbols.getDecimalSeparator());
- byte[] bytes = builder.toString().getBytes("UTF-8");
-
- return new ByteArrayInputStream(bytes);
+ return toInputStream(builder.toString());
}
private void write(StringBuilder builder, String name, char value)
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/e9651b5b/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/MessageCatalogResource.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/MessageCatalogResource.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/MessageCatalogResource.java
index c2548a2..3ba7505 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/MessageCatalogResource.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/MessageCatalogResource.java
@@ -19,10 +19,8 @@ import org.apache.tapestry5.ioc.Messages;
import org.apache.tapestry5.json.JSONObject;
import org.apache.tapestry5.services.messages.ComponentMessagesSource;
-import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
-import java.io.UnsupportedEncodingException;
import java.net.URL;
import java.util.Locale;
@@ -89,23 +87,16 @@ public class MessageCatalogResource extends VirtualResource
@Override
public InputStream openStream() throws IOException
{
- return new ByteArrayInputStream(getBytes());
+ return toInputStream(getBytes());
}
- private byte[] getBytes()
+ private byte[] getBytes() throws IOException
{
- if (bytes != null)
+ if (bytes == null)
{
- return bytes;
+ bytes = assembleCatalog().getBytes(UTF8);
}
- try
- {
- bytes = assembleCatalog().getBytes("UTF-8");
- } catch (UnsupportedEncodingException e)
- {
- throw new RuntimeException(e);
- }
return bytes;
}
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/e9651b5b/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/VirtualResource.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/VirtualResource.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/VirtualResource.java
index 6c76c3a..c353db5 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/VirtualResource.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/VirtualResource.java
@@ -16,7 +16,11 @@ package org.apache.tapestry5.internal.util;
import org.apache.tapestry5.ioc.Resource;
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
import java.net.URL;
+import java.nio.charset.Charset;
import java.util.Locale;
/**
@@ -31,6 +35,8 @@ import java.util.Locale;
*/
public abstract class VirtualResource implements Resource
{
+ protected static final Charset UTF8 = Charset.forName("UTF-8");
+
private <T> T unsupported(String name)
{
throw new UnsupportedOperationException(String.format("Method %s() is not supported for a VirtualResource.", name));
@@ -84,4 +90,14 @@ public abstract class VirtualResource implements Resource
{
return unsupported("getPath");
}
+
+ protected InputStream toInputStream(String content) throws IOException
+ {
+ return toInputStream(content.getBytes(UTF8));
+ }
+
+ protected InputStream toInputStream(byte[] content) throws IOException
+ {
+ return new ByteArrayInputStream(content);
+ }
}