From 783ecfd9d77f4d6ca0b2996aaddb985a013cfcda Mon Sep 17 00:00:00 2001 From: gojomo Date: Thu, 27 Aug 2009 00:12:15 +0000 Subject: [PATCH] [HER-1655] Excessive charset/character-encoding exceptions; is fallback behavior correct? * ReplayCharSequence.java, GenericReplayCharSequence.java, InMemoryReplayCharSequence.java refactor to put fallback-encoding in single place --- .../main/java/org/archive/io/GenericReplayCharSequence.java | 2 +- .../main/java/org/archive/io/InMemoryReplayCharSequence.java | 2 +- commons/src/main/java/org/archive/io/ReplayCharSequence.java | 5 +++++ 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/commons/src/main/java/org/archive/io/GenericReplayCharSequence.java b/commons/src/main/java/org/archive/io/GenericReplayCharSequence.java index b1fc88fd..11a4c380 100644 --- a/commons/src/main/java/org/archive/io/GenericReplayCharSequence.java +++ b/commons/src/main/java/org/archive/io/GenericReplayCharSequence.java @@ -154,7 +154,7 @@ public class GenericReplayCharSequence implements ReplayCharSequence { } catch (IllegalArgumentException e) { logger.log(Level.WARNING,"charset problem: "+charsetName,e); // TODO: better detection or default - charset = Charset.forName("UTF-8"); + charset = Charset.forName(FALLBACK_CHARSET_NAME); } if (charset.newEncoder().maxBytesPerChar() == 1.0) { logger.info("charset=" + charsetName diff --git a/commons/src/main/java/org/archive/io/InMemoryReplayCharSequence.java b/commons/src/main/java/org/archive/io/InMemoryReplayCharSequence.java index 620100b6..3c6cb233 100644 --- a/commons/src/main/java/org/archive/io/InMemoryReplayCharSequence.java +++ b/commons/src/main/java/org/archive/io/InMemoryReplayCharSequence.java @@ -91,7 +91,7 @@ public class InMemoryReplayCharSequence implements ReplayCharSequence { } catch (IllegalArgumentException e) { logger.log(Level.WARNING,"charset problem: "+encoding,e); // TODO: better detection or default - charset = Charset.forName("UTF-8"); + charset = Charset.forName(FALLBACK_CHARSET_NAME); } return charset.decode(bb).asReadOnlyBuffer(); } diff --git a/commons/src/main/java/org/archive/io/ReplayCharSequence.java b/commons/src/main/java/org/archive/io/ReplayCharSequence.java index 38d975eb..162b4734 100644 --- a/commons/src/main/java/org/archive/io/ReplayCharSequence.java +++ b/commons/src/main/java/org/archive/io/ReplayCharSequence.java @@ -37,6 +37,11 @@ import java.io.IOException; */ public interface ReplayCharSequence extends CharSequence, Closeable { + /** charset to use in replay when declared value + * is absent/illegal/unavailable */ + String FALLBACK_CHARSET_NAME = "UTF-8"; +// String FALLBACK_CHARSET_NAME = "ISO8859_1"; + /** * Call this method when done so implementation has chance to clean up * resources.