package com.fasterxml.jackson.jaxrs.cfg;

import java.util.concurrent.atomic.AtomicBoolean;

import com.fasterxml.jackson.databind.*;

Based on ideas from [Issue#32], this class allows registering a modifier (ObjectReaderModifier) that can be used to reconfigure ObjectReader that JAX-RS Resource will use for reading input into Java Objects. Usually this class is accessed from a Servlet or JAX-RS filter before execution reaches resource.
Since:2.3
/** * Based on ideas from [Issue#32], this class allows registering a * modifier ({@link ObjectReaderModifier}) that can be used to * reconfigure {@link ObjectReader} * that JAX-RS Resource will use for reading input into Java Objects. * Usually this class is accessed from a Servlet or JAX-RS filter * before execution reaches resource. * * @since 2.3 */
public class ObjectReaderInjector { protected static final ThreadLocal<ObjectReaderModifier> _threadLocal = new ThreadLocal<ObjectReaderModifier>();
Simple marker used to optimize out ThreadLocal access in cases where this feature is not being used
/** * Simple marker used to optimize out {@link ThreadLocal} access in cases * where this feature is not being used */
protected static final AtomicBoolean _hasBeenSet = new AtomicBoolean(false); private ObjectReaderInjector() { } public static void set(ObjectReaderModifier mod) { _hasBeenSet.set(true); _threadLocal.set(mod); } public static ObjectReaderModifier get() { return _hasBeenSet.get() ? _threadLocal.get() : null; } public static ObjectReaderModifier getAndClear() { ObjectReaderModifier mod = get(); if (mod != null) { _threadLocal.remove(); } return mod; } }