From 084d35831b733458204eb7043a8b77beba2a75e6 Mon Sep 17 00:00:00 2001
From: kenneth_suter <kenneth_suter@localhost>
Date: Fri, 12 Oct 2007 22:17:41 +0000
Subject: [PATCH] issue 2142: fixes MessageBuilder.toMessage to that the resulting message maintains the ability to be rendered in locales different that the local locale.
---
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/messages/MessagesTestCase.java | 34 ++++++++
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/messages/MessageBuilderTest.java | 125 +++++++++++++++++++++++++++++++
opendj-sdk/opends/src/messages/src/org/opends/messages/MessageBuilder.java | 34 +++-----
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/messages/MessageTest.java | 40 ---------
4 files changed, 176 insertions(+), 57 deletions(-)
diff --git a/opendj-sdk/opends/src/messages/src/org/opends/messages/MessageBuilder.java b/opendj-sdk/opends/src/messages/src/org/opends/messages/MessageBuilder.java
index 418576f..e412c2f 100644
--- a/opendj-sdk/opends/src/messages/src/org/opends/messages/MessageBuilder.java
+++ b/opendj-sdk/opends/src/messages/src/org/opends/messages/MessageBuilder.java
@@ -158,13 +158,17 @@
/**
* Append a string to this builder.
*
- * @param rawString to append
+ * @param cs to append
* @return reference to this builder
*/
- public MessageBuilder append(CharSequence rawString) {
- if (rawString != null) {
- sb.append(rawString);
- messages.add(Message.raw(rawString));
+ public MessageBuilder append(CharSequence cs) {
+ if (cs != null) {
+ sb.append(cs);
+ if (cs instanceof Message) {
+ messages.add((Message)cs);
+ } else {
+ messages.add(Message.raw(cs));
+ }
}
return this;
}
@@ -254,21 +258,11 @@
* @return Message raw message representing builder content
*/
public Message toMessage() {
- return Message.raw(sb.toString());
- }
-
- /**
- * Returns a raw message representation of the appended
- * content in a specific locale. Only <code>Message</code>s
- * appended to this builder are rendered in the requested
- * locale. Raw strings appended to this buffer are not
- * translated to different locale.
- *
- * @param locale requested
- * @return Message raw message representing builder content
- */
- public Message toMessage(Locale locale) {
- return Message.raw(toString(locale));
+ StringBuffer fmtString = new StringBuffer();
+ for (int i = 0; i < messages.size(); i++) {
+ fmtString.append("%s");
+ }
+ return Message.raw(fmtString, messages.toArray());
}
/**
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/messages/MessageBuilderTest.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/messages/MessageBuilderTest.java
new file mode 100644
index 0000000..dfe7f87
--- /dev/null
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/messages/MessageBuilderTest.java
@@ -0,0 +1,125 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License, Version 1.0 only
+ * (the "License"). You may not use this file except in compliance
+ * with the License.
+ *
+ * You can obtain a copy of the license at
+ * trunk/opends/resource/legal-notices/OpenDS.LICENSE
+ * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at
+ * trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable,
+ * add the following below this CDDL HEADER, with the fields enclosed
+ * by brackets "[]" replaced with your own identifying information:
+ * Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ *
+ *
+ * Portions Copyright 2007 Sun Microsystems, Inc.
+ */
+
+package org.opends.messages;
+
+import static org.testng.Assert.*;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.DataProvider;
+import org.testng.annotations.Test;
+
+import java.io.IOException;
+import java.util.Locale;
+
+/**
+ * Message Tester.
+ */
+public class MessageBuilderTest extends MessagesTestCase {
+
+ @BeforeClass
+ public void setUp() throws IOException {
+ createDummyLocalizedCoreMessagesFile();
+ }
+
+
+ @DataProvider(name = "toMessageData")
+ public Object[][] toMessageData() {
+ return new Object[][]{
+
+ // All strings
+ { new CharSequence[] {
+ "Once", " upon", " a", " time." },
+ "Once upon a time." },
+
+ // All messages
+ { new CharSequence[] {
+ Message.raw("Once"),
+ Message.raw(" upon"),
+ Message.raw(" a"),
+ Message.raw(" time.") },
+ "Once upon a time." },
+
+ // Mix of strings and messages
+ { new CharSequence[] {
+ Message.raw("Once"),
+ " upon",
+ Message.raw(" a"),
+ " time." },
+ "Once upon a time." },
+
+ };
+ }
+
+ @Test (dataProvider = "toMessageData")
+ public void testToMessage(CharSequence[] content, String result)
+ {
+ MessageBuilder mb = new MessageBuilder();
+ for (CharSequence c : content) {
+ mb.append(c);
+ }
+ Message m = mb.toMessage();
+ assertTrue(result.equals(m.toString()));
+ }
+
+
+ @DataProvider(name = "toMessageData1")
+ public Object[][] toMessageData1() {
+ return new Object[][]{
+
+ // default locale
+ { new CharSequence[] {
+ CoreMessages.ERR_ADD_CANNOT_ADD_ROOT_DSE.get(),
+ CoreMessages.ERR_ABANDON_OP_NO_SUCH_OPERATION.get(1) },
+ Locale.getDefault(),
+ CoreMessages.ERR_ADD_CANNOT_ADD_ROOT_DSE.get().toString() +
+ CoreMessages.ERR_ABANDON_OP_NO_SUCH_OPERATION.get(1).toString() },
+
+ { new CharSequence[] {
+ CoreMessages.ERR_ADD_CANNOT_ADD_ROOT_DSE.get(),
+ CoreMessages.ERR_ABANDON_OP_NO_SUCH_OPERATION.get(1) },
+ TEST_LOCALE,
+ CoreMessages.ERR_ADD_CANNOT_ADD_ROOT_DSE.get().toString(TEST_LOCALE) +
+ CoreMessages.ERR_ABANDON_OP_NO_SUCH_OPERATION.get(1).toString(TEST_LOCALE) }
+
+ };
+ }
+
+
+ @Test (dataProvider = "toMessageData1")
+ public void testToMessage1(CharSequence[] content, Locale locale, String result)
+ {
+ MessageBuilder mb = new MessageBuilder();
+ for (CharSequence c : content) {
+ mb.append(c);
+ }
+ Message m = mb.toMessage();
+ System.out.println("result:" + result);
+ System.out.println("message:" + m.toString(locale));
+ assertTrue(result.equals(m.toString(locale)));
+ }
+
+}
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/messages/MessageTest.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/messages/MessageTest.java
index 009c395..f8a3e47 100644
--- a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/messages/MessageTest.java
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/messages/MessageTest.java
@@ -27,32 +27,18 @@
package org.opends.messages;
-import org.testng.annotations.*;
-import org.opends.server.DirectoryServerTestCase;
-import org.opends.server.TestCaseUtils;
import static org.testng.Assert.*;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.DataProvider;
+import org.testng.annotations.Test;
-import java.util.Enumeration;
-import java.util.Locale;
-import java.util.Properties;
-import java.util.ResourceBundle;
-import java.io.File;
import java.io.IOException;
-import java.io.FileOutputStream;
/**
* Message Tester.
*/
public class MessageTest extends MessagesTestCase {
- /** Locale for accessing a pseudo localized test messages file. */
- private static final Locale TEST_LOCALE = Locale.CHINA;
-
- /** Message to appear in pseudo localized test messages file. */
- private static final String TEST_MSG = "XXX";
-
- private static final String EOL = System.getProperty("line.separator");
-
@BeforeClass
public void setUp() throws IOException {
createDummyLocalizedCoreMessagesFile();
@@ -156,24 +142,4 @@
assert(desc2.getSeverity().equals(Severity.INFORMATION));
}
- private void createDummyLocalizedCoreMessagesFile() throws IOException {
- Properties corePseudoI18nMsgs = new Properties();
- ResourceBundle coreDefaultMsgs = ResourceBundle.getBundle("messages/core");
- Enumeration<String> keyEnum = coreDefaultMsgs.getKeys();
- while (keyEnum.hasMoreElements()) {
- corePseudoI18nMsgs.put(keyEnum.nextElement(), TEST_MSG);
- }
- File buildRoot = new File(System.getProperty(TestCaseUtils.PROPERTY_BUILD_ROOT));
- File corePseudoI18nMsgsFile = new File(buildRoot,
- "build" + File.separator + "unit-tests" +
- File.separator + "classes" +
- File.separator + "messages" +
- File.separator + "core_" + TEST_LOCALE.getLanguage() +
- ".properties");
- if (!corePseudoI18nMsgsFile.getParentFile().exists()) {
- corePseudoI18nMsgsFile.getParentFile().mkdirs();
- }
- corePseudoI18nMsgs.store(new FileOutputStream(corePseudoI18nMsgsFile), "");
- }
-
}
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/messages/MessagesTestCase.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/messages/MessagesTestCase.java
index 1bc10ed..f0f0dd9 100644
--- a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/messages/MessagesTestCase.java
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/messages/MessagesTestCase.java
@@ -31,7 +31,15 @@
import org.testng.annotations.Test;
import org.opends.server.DirectoryServerTestCase;
+import org.opends.server.TestCaseUtils;
+import java.io.IOException;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.util.Properties;
+import java.util.ResourceBundle;
+import java.util.Enumeration;
+import java.util.Locale;
/**
@@ -41,6 +49,32 @@
public abstract class MessagesTestCase
extends DirectoryServerTestCase
{
+ /** Locale for accessing a pseudo localized test messages file. */
+ protected static final Locale TEST_LOCALE = Locale.CHINA;
+
+ /** Message to appear in pseudo localized test messages file. */
+ protected static final String TEST_MSG = "XXX";
+ protected static final String EOL = System.getProperty("line.separator");
+
// No implementation required.
+ protected void createDummyLocalizedCoreMessagesFile() throws IOException {
+ Properties corePseudoI18nMsgs = new Properties();
+ ResourceBundle coreDefaultMsgs = ResourceBundle.getBundle("messages/core");
+ Enumeration<String> keyEnum = coreDefaultMsgs.getKeys();
+ while (keyEnum.hasMoreElements()) {
+ corePseudoI18nMsgs.put(keyEnum.nextElement(), TEST_MSG);
+ }
+ File buildRoot = new File(System.getProperty(TestCaseUtils.PROPERTY_BUILD_ROOT));
+ File corePseudoI18nMsgsFile = new File(buildRoot,
+ "build" + File.separator + "unit-tests" +
+ File.separator + "classes" +
+ File.separator + "messages" +
+ File.separator + "core_" + TEST_LOCALE.getLanguage() +
+ ".properties");
+ if (!corePseudoI18nMsgsFile.getParentFile().exists()) {
+ corePseudoI18nMsgsFile.getParentFile().mkdirs();
+ }
+ corePseudoI18nMsgs.store(new FileOutputStream(corePseudoI18nMsgsFile), "");
+ }
}
--
Gitblit v1.10.0