package com.hehenian.common.session.cache; import java.io.Serializable; import java.util.HashMap; import java.util.Map; import net.spy.memcached.MemcachedClient; import org.springframework.beans.factory.DisposableBean; public class MemcachedSpyCache implements SessionCache, DisposableBean { private MemcachedClient client; @SuppressWarnings("unchecked") public HashMap<String, Serializable> getSession(String root) { return (HashMap<String, Serializable>) client.get(root); } public void setSession(String root, Map<String, Serializable> session, int exp) { client.set(root, exp * 60, session); } public Serializable getAttribute(String root, String name) { HashMap<String, Serializable> session = getSession(root); return session != null ? session.get(name) : null; } public void setAttribute(String root, String name, Serializable value, int exp) { HashMap<String, Serializable> session = getSession(root); if (session == null) { session = new HashMap<String, Serializable>(); } session.put(name, value); client.set(root, exp * 60, session); } public void clear(String root) { client.delete(root); } public boolean exist(String root) { return client.get(root) != null; } public void destroy() throws Exception { client.shutdown(); } public void setClient(MemcachedClient client) { this.client = client; } }