/** * Creates {@link SimpleMessage} instances containing the formatted parameterized message string. * * @param message The message pattern. * @param params The message parameters. * @return The Message. * * @see MessageFactory#newMessage(String, Object...) */ @Override public Message newMessage(final String message, final Object... params) { if (params == null) { return new SimpleMessage(message); } final ParameterizedMessage msg = new ParameterizedMessage(message, params); return new StatusMessage(msg.getFormattedMessage(), msg.getThrowable()); } }
@Test public void testZeroLength() { final String testMsg = ""; ParameterizedMessage msg = new ParameterizedMessage(testMsg, new Object[]{"arg"}); String result = msg.getFormattedMessage(); assertEquals(testMsg, result); final Object[] array = null; msg = new ParameterizedMessage(testMsg, array, null); result = msg.getFormattedMessage(); assertEquals(testMsg, result); }
@Test public void testNoArgs() { final String testMsg = "Test message {}"; ParameterizedMessage msg = new ParameterizedMessage(testMsg, (Object[]) null); String result = msg.getFormattedMessage(); assertEquals(testMsg, result); final Object[] array = null; msg = new ParameterizedMessage(testMsg, array, null); result = msg.getFormattedMessage(); assertEquals(testMsg, result); }
@Test public void testOneCharLength() { final String testMsg = "d"; ParameterizedMessage msg = new ParameterizedMessage(testMsg, new Object[]{"arg"}); String result = msg.getFormattedMessage(); assertEquals(testMsg, result); final Object[] array = null; msg = new ParameterizedMessage(testMsg, array, null); result = msg.getFormattedMessage(); assertEquals(testMsg, result); }
@Test public void testSafeWithMutableParams() { // LOG4J2-763 final String testMsg = "Test message {}"; final Mutable param = new Mutable().set("abc"); final ParameterizedMessage msg = new ParameterizedMessage(testMsg, param); // modify parameter before calling msg.getFormattedMessage param.set("XYZ"); final String actual = msg.getFormattedMessage(); assertEquals("Should use current param value", "Test message XYZ", actual); // modify parameter after calling msg.getFormattedMessage param.set("000"); final String after = msg.getFormattedMessage(); assertEquals("Should not change after rendered once", "Test message XYZ", after); } }
@Test public void testParameterizedPerf() { final String testMsg = "Test message {} {}"; final Timer timer = new Timer("Parameterized", LOOP_CNT); timer.start(); for (int i = 0; i < LOOP_CNT; ++i) { final ParameterizedMessage msg = new ParameterizedMessage(testMsg, "Apache", "Log4j"); array[i] = msg.getFormattedMessage(); } timer.stop(); paramTime = timer.getElapsedNanoTime(); System.out.println(timer.toString()); }
/** * Creates {@link SimpleMessage} instances containing the formatted parameterized message string. * * @param message The message pattern. * @param params The message parameters. * @return The Message. * * @see MessageFactory#newMessage(String, Object...) */ @Override public Message newMessage(final String message, final Object... params) { if (params == null) { return new SimpleMessage(message); } final ParameterizedMessage msg = new ParameterizedMessage(message, params); return new StatusMessage(msg.getFormattedMessage(), msg.getThrowable()); } }