From 69e53a50506083bb934a886ad67e6933b67a92c7 Mon Sep 17 00:00:00 2001
From: kenneth_suter <kenneth_suter@localhost>
Date: Thu, 16 Aug 2007 17:56:25 +0000
Subject: [PATCH] This addresses a few errors related to the messaging framework:
---
opends/src/messages/src/org/opends/messages/Message.java | 43 +++++++++++++++++++++++++++----------------
1 files changed, 27 insertions(+), 16 deletions(-)
diff --git a/opends/src/messages/src/org/opends/messages/Message.java b/opends/src/messages/src/org/opends/messages/Message.java
index 1d0b6ef..13065f8 100644
--- a/opends/src/messages/src/org/opends/messages/Message.java
+++ b/opends/src/messages/src/org/opends/messages/Message.java
@@ -30,6 +30,7 @@
import java.util.Locale;
import java.util.Formatter;
import java.util.Formattable;
+import java.util.UnknownFormatConversionException;
/**
* Renders sensitive textural strings. In most cases message are intended
@@ -153,9 +154,16 @@
* @return String representation of this message
*/
public String toString(Locale locale) {
- String s = descriptor.getFormatString(locale);
- if (needsFormatting(s)) {
- s = new Formatter(locale).format(locale, s, args).toString();
+ String s;
+ String fmt = descriptor.getFormatString(locale);
+ if (needsFormatting(fmt)) {
+ try {
+ s = new Formatter(locale).format(locale, fmt, args).toString();
+ } catch (UnknownFormatConversionException e) {
+ s = fmt; // This shouldn't happen but just in case...
+ }
+ } else {
+ s = fmt;
}
if (s == null) s = "";
return s;
@@ -316,19 +324,6 @@
}
/**
- * Indicates whether or not formatting should be applied
- * to the given format string. Note that a format string
- * might have literal specifiers (%% or %n for example)that
- * require formatting but are not replaced by arguments.
- * @param s candiate for formatting
- * @return boolean where true indicates that the format
- * string requires formatting
- */
- private boolean needsFormatting(String s) {
- return s != null && (args != null || s.indexOf('%') > 0);
- }
-
- /**
* {@inheritDoc}
*/
public int compareTo(Object o) {
@@ -356,4 +351,20 @@
result = 31 * toString().hashCode();
return result;
}
+
+ /**
+ * Indicates whether or not formatting should be applied
+ * to the given format string. Note that a format string
+ * might have literal specifiers (%% or %n for example) that
+ * require formatting but are not replaced by arguments.
+ * @param s candiate for formatting
+ * @return boolean where true indicates that the format
+ * string requires formatting
+ */
+ protected boolean needsFormatting(String s) {
+ return s != null &&
+ ((args != null && args.length > 0)
+ || s.matches(".*%[n|%].*")); // match Formatter literals
+ }
+
}
--
Gitblit v1.10.0