@Override public final Object resolveArgument(Object arg) { while (true) { if (canResolveCustomType(arg)) { arg = resolveCustomType(arg); } else if (arg instanceof AtomicReference) { arg = ((AtomicReference<?>) arg).get(); } else if (arg instanceof AtomicBoolean) { // Not a subclass of Number so we need to unwrap it return ((AtomicBoolean) arg).get() ? 1 : 0; } else if (arg instanceof Enum<?>) { return ((Enum<?>) arg).name(); } else if (arg instanceof ThreadLocal) { arg = ((ThreadLocal<?>) arg).get(); } else { return arg; } } }
@Override public final Object resolveArgument(Object arg) { while (true) { if (canResolveCustomType(arg)) { arg = resolveCustomType(arg); } else if (arg instanceof AtomicReference) { arg = ((AtomicReference<?>) arg).get(); } else if (arg instanceof AtomicBoolean) { // Not a subclass of Number so we need to unwrap it return ((AtomicBoolean) arg).get() ? 1 : 0; } else if (arg instanceof Enum<?>) { return ((Enum<?>) arg).name(); } else if (arg instanceof ThreadLocal) { arg = ((ThreadLocal<?>) arg).get(); } else { return arg; } } }