package com.github.pires.example.shiro; import com.hazelcast.query.Predicate; import java.io.Serializable; import java.util.Map; import org.apache.shiro.session.Session; /** * Hazelcast query predicate for Shiro session attributes. */ public class SessionAttributePredicate<T> implements Predicate<Serializable, Session> { private final String attributeName; private final T attributeValue; public SessionAttributePredicate(String attributeName, T attributeValue) { this.attributeName = attributeName; this.attributeValue = attributeValue; } public String getAttributeName() { return attributeName; } public T getAttributeValue() { return attributeValue; } @Override public boolean apply(Map.Entry<Serializable, Session> sessionEntry) { final T attribute = (T) sessionEntry.getValue().getAttribute(attributeName); return attribute.equals(attributeValue); } }