/**
*
*/
package com.github.phantomthief.thrift.client.utils;
import static java.util.stream.Collectors.toSet;
import static java.util.stream.Stream.of;
import java.lang.reflect.Method;
import java.util.Random;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
/**
* <p>
* ThriftClientUtils class.
* </p>
*
* @author w.vela
* @version $Id: $Id
*/
public final class ThriftClientUtils {
private static final Random RANDOM = new Random();
private static ConcurrentMap<Class<?>, Set<String>> interfaceMethodCache = new ConcurrentHashMap<>();
private ThriftClientUtils() {
throw new UnsupportedOperationException();
}
/**
* <p>
* randomNextInt.
* </p>
*
* @return a int.
*/
public static int randomNextInt() {
return RANDOM.nextInt();
}
/**
* <p>
* getInterfaceMethodNames.
* </p>
*
* @param ifaceClass a {@link java.lang.Class} object.
* @return a {@link java.util.Set} object.
*/
public static Set<String> getInterfaceMethodNames(Class<?> ifaceClass) {
return interfaceMethodCache.computeIfAbsent(ifaceClass, i -> of(i.getInterfaces()) //
.flatMap(c -> of(c.getMethods())) //
.map(Method::getName) //
.collect(toSet()));
}
}