@Override public final String remove(Object key) { if (key == null) throw new NullPointerException("null keys are not allowed."); if ((key instanceof String) && traceeKeys.get().remove(key)) { final String current = mdcAdapter.get((String) key); mdcAdapter.remove((String) key); return current; } else { return null; } }
@Override public final String put(String key, String value) { if (key == null) throw new NullPointerException("null keys are not allowed."); if (value == null) throw new NullPointerException("null values are not allowed."); final Set<String> registeredKeys = traceeKeys.get(); if (!registeredKeys.contains(key)) { registeredKeys.add(key); } final String current = mdcAdapter.get(key); mdcAdapter.put(key, value); return current; }
@Override public final String get(Object key) { if ((key instanceof String) && traceeKeys.get().contains(key)) return mdcAdapter.get((String) key); else return null; }
/** * Removes all tracee values from the underlying MDC and removes the thread local traceeKeys set. */ @Override public final void clear() { final Set<String> keys = traceeKeys.get(); for (String s : keys) { mdcAdapter.remove(s); } traceeKeys.remove(); }
@Override public final boolean containsKey(Object key) { return key instanceof String && traceeKeys.get().contains(key) && mdcAdapter.containsKey((String) key); }
@Override public final Collection<String> values() { final Collection<String> values = new ArrayList<String>(traceeKeys.get()); for (String traceeKey : traceeKeys.get()) { values.add(mdcAdapter.get(traceeKey)); } return Collections.unmodifiableCollection(values); }