Skip to content

Commit 2bcfce9

Browse files
committed
Make default message factories GraalVM friendly
1 parent 54517c0 commit 2bcfce9

File tree

2 files changed

+16
-20
lines changed

2 files changed

+16
-20
lines changed

log4j-api/src/main/java/org/apache/logging/log4j/message/DefaultFlowMessageFactory.java

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,7 @@
1717
package org.apache.logging.log4j.message;
1818

1919
import java.io.Serializable;
20-
import org.apache.logging.log4j.spi.AbstractLogger;
21-
import org.apache.logging.log4j.util.LoaderUtil;
20+
import java.util.Objects;
2221
import org.apache.logging.log4j.util.StringBuilderFormattable;
2322
import org.apache.logging.log4j.util.StringBuilders;
2423
import org.apache.logging.log4j.util.Strings;
@@ -34,6 +33,8 @@ public class DefaultFlowMessageFactory implements FlowMessageFactory, Serializab
3433
private static final String ENTRY_DEFAULT_PREFIX = "Enter";
3534
private static final long serialVersionUID = 8578655591131397576L;
3635

36+
public static final FlowMessageFactory INSTANCE = new DefaultFlowMessageFactory();
37+
3738
private final String entryText;
3839
private final String exitText;
3940
private final MessageFactory messageFactory;
@@ -51,17 +52,22 @@ public DefaultFlowMessageFactory() {
5152
* @param exitText the text to use for trace exit, like {@code "Exit"}.
5253
*/
5354
public DefaultFlowMessageFactory(final String entryText, final String exitText) {
55+
this(entryText, exitText, createDefaultMessageFactory());
56+
}
57+
58+
public DefaultFlowMessageFactory(final MessageFactory messageFactory) {
59+
this(ENTRY_DEFAULT_PREFIX, EXIT_DEFAULT_PREFIX, Objects.requireNonNull(messageFactory));
60+
}
61+
62+
private DefaultFlowMessageFactory(
63+
final String entryText, final String exitText, final MessageFactory messageFactory) {
5464
this.entryText = entryText;
5565
this.exitText = exitText;
56-
this.messageFactory = createDefaultMessageFactory();
66+
this.messageFactory = messageFactory;
5767
}
5868

5969
private static MessageFactory createDefaultMessageFactory() {
60-
try {
61-
return LoaderUtil.newInstanceOf(AbstractLogger.DEFAULT_MESSAGE_FACTORY_CLASS);
62-
} catch (final ReflectiveOperationException e) {
63-
throw new IllegalStateException(e);
64-
}
70+
return ParameterizedMessageFactory.INSTANCE;
6571
}
6672

6773
private static class AbstractFlowMessage implements FlowMessage, StringBuilderFormattable {

log4j-api/src/main/java/org/apache/logging/log4j/spi/AbstractLogger.java

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@
3535
import org.apache.logging.log4j.status.StatusLogger;
3636
import org.apache.logging.log4j.util.Constants;
3737
import org.apache.logging.log4j.util.LambdaUtil;
38-
import org.apache.logging.log4j.util.LoaderUtil;
3938
import org.apache.logging.log4j.util.MessageSupplier;
4039
import org.apache.logging.log4j.util.PerformanceSensitive;
4140
import org.apache.logging.log4j.util.StackLocatorUtil;
@@ -198,12 +197,7 @@ protected Message catchingMsg(final Throwable throwable) {
198197
}
199198

200199
private static MessageFactory2 createDefaultMessageFactory() {
201-
try {
202-
final MessageFactory result = LoaderUtil.newInstanceOf(DEFAULT_MESSAGE_FACTORY_CLASS);
203-
return narrow(result);
204-
} catch (final ReflectiveOperationException e) {
205-
throw new IllegalStateException(e);
206-
}
200+
return ParameterizedMessageFactory.INSTANCE;
207201
}
208202

209203
private static MessageFactory2 narrow(final MessageFactory result) {
@@ -214,11 +208,7 @@ private static MessageFactory2 narrow(final MessageFactory result) {
214208
}
215209

216210
private static FlowMessageFactory createDefaultFlowMessageFactory() {
217-
try {
218-
return LoaderUtil.newInstanceOf(DEFAULT_FLOW_MESSAGE_FACTORY_CLASS);
219-
} catch (final ReflectiveOperationException e) {
220-
throw new IllegalStateException(e);
221-
}
211+
return DefaultFlowMessageFactory.INSTANCE;
222212
}
223213

224214
@Override

0 commit comments

Comments
 (0)