
org.infinispan.distribution.group.GroupManagerImpl Maven / Gradle / Ivy
package org.infinispan.distribution.group;
import static org.infinispan.commons.util.ReflectionUtil.invokeAccessibly;
import org.infinispan.commons.util.CollectionFactory;
import org.infinispan.commons.util.ReflectionUtil;
import org.infinispan.commons.util.Util;
import org.infinispan.factories.annotations.Inject;
import org.infinispan.interceptors.locking.ClusteringDependentLogic;
import org.infinispan.remoting.transport.Address;
import java.lang.reflect.Method;
import java.security.AccessController;
import java.security.PrivilegedAction;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.ConcurrentMap;
/**
* @private
*/
public class GroupManagerImpl implements GroupManager {
private interface GroupMetadata {
GroupMetadata NONE = new GroupMetadata() {
@Override
public String getGroup(Object instance) {
return null;
}
};
String getGroup(Object instance);
}
private static class GroupMetadataImpl implements GroupMetadata {
private final Method method;
public GroupMetadataImpl(Method method) {
if (!String.class.isAssignableFrom(method.getReturnType()))
throw new IllegalArgumentException(Util.formatString("@Group method %s must return java.lang.String", method));
if (method.getParameterTypes().length > 0)
throw new IllegalArgumentException(Util.formatString("@Group method %s must have zero arguments", method));
this.method = method;
}
@Override
public String getGroup(Object instance) {
Object object;
if (System.getSecurityManager() == null) {
object = invokeAccessibly(instance, method, Util.EMPTY_OBJECT_ARRAY);
} else {
object = AccessController.doPrivileged((PrivilegedAction
© 2015 - 2025 Weber Informatics LLC | Privacy Policy