1 package org.apache.log4j;
2
3 import java.lang.reflect.Field;
4 import java.lang.reflect.Method;
5
6 import org.apache.log4j.helpers.ThreadLocalMap;
7
8 public class MDCFriend {
9
10 public static void fixForJava9() {
11 if (MDC.mdc.tlm == null) {
12 MDC.mdc.tlm = new ThreadLocalMap();
13 MDC.mdc.java1 = false;
14 setRemoveMethod(MDC.mdc);
15 }
16
17 }
18
19 private static void setRemoveMethod(MDC mdc) {
20 try {
21 Method removeMethod = ThreadLocal.class.getMethod("remove");
22 Field removeMethodField = MDC.class.getDeclaredField("removeMethod");
23 removeMethodField.setAccessible(true);
24 removeMethodField.set(mdc, removeMethod);
25 } catch (NoSuchMethodException e) {
26 } catch (SecurityException e) {
27 } catch (NoSuchFieldException e) {
28 } catch (IllegalArgumentException e) {
29 } catch (IllegalAccessException e) {
30 }
31
32 }
33 }