SimpleRpcSession.java

package eu.javaexperience.rpc;

import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

import eu.javaexperience.semantic.references.MayNotNull;

public class SimpleRpcSession implements RpcSession
{
	protected RpcProtocolHandler handler;
	protected long creationTime = System.currentTimeMillis();
	protected long lastAccess;
	
	protected Map<String, Object> attr = new ConcurrentHashMap<String, Object>();
	
	public Object get(String key)
	{
		return attr.get(key);
	}
	
	public void put(String key, Object value)
	{
		if(null == value)
		{
			attr.remove(key);
		}
		else
		{
			attr.put(key, value);
		}
	}
	
	public SimpleRpcSession(RpcProtocolHandler handler)
	{
		this.handler = handler;
	}
	
	public long getLastAccess()
	{
		return lastAccess;
	}
	
	@Override
	public long getCreationTime()
	{
		return creationTime;
	}

	@Override
	public long getLastAccessTime()
	{
		return lastAccess;
	}

	@Override
	public @MayNotNull RpcProtocolHandler getDefaultRpcProtocolHandler()
	{
		return handler;
	}

	@Override
	public void destroy()
	{
		
	}

	public void setProtocolHandler(RpcProtocolHandler defaultProtocol)
	{
		handler = defaultProtocol;
	}

	@Override
	public Map<String, Object> getExtraDataMap()
	{
		return attr;
	}
}