Skip to content

Commit b8a115f

Browse files
committed
Fix code review problems #1961
1 parent 5ff426e commit b8a115f

File tree

5 files changed

+32
-12
lines changed

5 files changed

+32
-12
lines changed

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -252,6 +252,7 @@ public StructuredDataId makeId(final String defaultId, final String anEnterprise
252252
* @deprecated Use {@link StructuredDataId#makeId(String, String)} instead
253253
*/
254254
@Deprecated
255+
@InlineMe(replacement = "this.makeId(defaultId, String.valueOf(anEnterpriseNumber))")
255256
public StructuredDataId makeId(final String defaultId, final int anEnterpriseNumber) {
256257
return makeId(defaultId, String.valueOf(anEnterpriseNumber));
257258
}

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

Lines changed: 23 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,10 @@ public final class ThreadContextMapFactory {
5353

5454
private static boolean GcFreeThreadContextKey;
5555
private static String ThreadContextMapName;
56+
private static final String GARBAGE_FREE_CONTEXT_MAP = "org.apache.logging.log4j.spi" +
57+
".GarbageFreeSortedArrayThreadContextMap";
58+
private static final String COPY_ON_WRITE_CONTEXT_MAP = "org.apache.logging.log4j.spi" +
59+
".CopyOnWriteSortedArrayThreadContextMap";
5660

5761
static {
5862
initPrivate();
@@ -86,15 +90,25 @@ public static ThreadContextMap createThreadContextMap() {
8690
final ClassLoader cl = ProviderUtil.findClassLoader();
8791
ThreadContextMap result = null;
8892
if (ThreadContextMapName != null) {
89-
try {
90-
final Class<?> clazz = cl.loadClass(ThreadContextMapName);
91-
if (ThreadContextMap.class.isAssignableFrom(clazz)) {
92-
result = (ThreadContextMap) clazz.getDeclaredConstructor().newInstance();
93-
}
94-
} catch (final ClassNotFoundException cnfe) {
95-
LOGGER.error("Unable to locate configured ThreadContextMap {}", ThreadContextMapName);
96-
} catch (final Exception ex) {
97-
LOGGER.error("Unable to create configured ThreadContextMap {}", ThreadContextMapName, ex);
93+
/*
94+
* Two implementation are package-private classes, so we instantiate them directly.
95+
* Other implementation must be publicly accessible (through `LoaderUtil`).
96+
*/
97+
switch (ThreadContextMapName) {
98+
case GARBAGE_FREE_CONTEXT_MAP:
99+
result = new GarbageFreeSortedArrayThreadContextMap();
100+
break;
101+
case COPY_ON_WRITE_CONTEXT_MAP:
102+
result = new CopyOnWriteSortedArrayThreadContextMap();
103+
break;
104+
default:
105+
try {
106+
result = LoaderUtil.newCheckedInstanceOf(ThreadContextMapName, ThreadContextMap.class);
107+
} catch (final ClassNotFoundException cnfe) {
108+
LOGGER.error("Unable to locate configured ThreadContextMap {}", ThreadContextMapName);
109+
} catch (final Exception ex) {
110+
LOGGER.error("Unable to create configured ThreadContextMap {}", ThreadContextMapName, ex);
111+
}
98112
}
99113
}
100114
if (result == null && ProviderUtil.hasProviders() && LogManager.getFactory() != null) { //LOG4J2-1658

log4j-api/src/main/java/org/apache/logging/log4j/util/Base64Util.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,10 @@ public final class Base64Util {
5050
private Base64Util() {
5151
}
5252

53+
/**
54+
* This method does not specify an encoding for the {@code str} parameter and should not be used.
55+
*/
56+
@Deprecated
5357
public static String encode(final String str) {
5458
if (str == null) {
5559
return null;

log4j-api/src/main/java/org/apache/logging/log4j/util/Constants.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,8 @@ private static int getMajorVersion() {
107107
}
108108

109109
static int getMajorVersion(final String version) {
110-
final String[] parts = version.split("-|\\.", -1);
110+
// Split into `major.minor.rest`
111+
final String[] parts = version.split("-|\\.", 3);
111112
boolean isJEP223;
112113
try {
113114
final int token = Integer.parseInt(parts[0]);

log4j-api/src/main/java/org/apache/logging/log4j/util/ProcessIdUtil.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,8 @@ public static String getProcessId() {
3939

4040
final Object runtimeMXBean = getRuntimeMXBean.invoke(null);
4141
final String name = (String) getName.invoke(runtimeMXBean);
42-
//String name = ManagementFactory.getRuntimeMXBean().getName(); //JMX not allowed on Android
43-
return name.split("@", -1)[0]; // likely works on most platforms
42+
// Split into first@rest
43+
return name.split("@", 2)[0]; // likely works on most platforms
4444
} catch (final Exception ex) {
4545
try {
4646
return new File("/proc/self").getCanonicalFile().getName(); // try a Linux-specific way

0 commit comments

Comments
 (0)