/*
* $Id$
* $URL$
*/
package org.subethamail.web.util;
import java.util.Collection;
import java.util.Map;
import java.util.Set;
import lombok.extern.java.Log;
import org.subethamail.entity.i.Permission;
/**
* A class and static method that will wrap a Set<Permission> in a
* Map<String, Boolean>. This way permissions can be checked
* in the JSP as "${perms.PERMISSION_NAME}".
*
* This implements only the methods that are likely to be called
* from JSP expressions. The static wrap() method is suitable
* for calling as a JSP function.
*
* @author Jeff Schnitzer
*/
@Log
public class PermissionWrapper implements Map<String, Boolean>
{
/** */
Set<Permission> perms;
/** */
public PermissionWrapper(Set<Permission> perms)
{
this.perms = perms;
}
/**
* Creates a new wrapper with the useful interface.
*/
public static Map<String, Boolean> wrapPerms(Set<Permission> perms)
{
return new PermissionWrapper(perms);
}
/* (non-Javadoc)
* @see java.util.Map#clear()
*/
public void clear()
{
throw new UnsupportedOperationException();
}
/* (non-Javadoc)
* @see java.util.Map#containsKey(java.lang.Object)
*/
public boolean containsKey(Object key)
{
Permission p = Permission.valueOf(key.toString());
return this.perms.contains(p);
}
/* (non-Javadoc)
* @see java.util.Map#containsValue(java.lang.Object)
*/
public boolean containsValue(Object value)
{
throw new UnsupportedOperationException();
}
/* (non-Javadoc)
* @see java.util.Map#entrySet()
*/
public Set<Entry<String, Boolean>> entrySet()
{
throw new UnsupportedOperationException();
}
/* (non-Javadoc)
* @see java.util.Map#get(java.lang.Object)
*/
public Boolean get(Object key)
{
Permission p = Permission.valueOf(key.toString());
if (this.perms.contains(p))
return Boolean.TRUE;
else
return Boolean.FALSE;
}
/* (non-Javadoc)
* @see java.util.Map#isEmpty()
*/
public boolean isEmpty()
{
return this.perms.isEmpty();
}
/* (non-Javadoc)
* @see java.util.Map#keySet()
*/
public Set<String> keySet()
{
throw new UnsupportedOperationException();
}
/* (non-Javadoc)
* @see java.util.Map#put(K, V)
*/
public Boolean put(String key, Boolean value)
{
throw new UnsupportedOperationException();
}
/* (non-Javadoc)
* @see java.util.Map#putAll(java.util.Map)
*/
public void putAll(Map<? extends String, ? extends Boolean> t)
{
throw new UnsupportedOperationException();
}
/* (non-Javadoc)
* @see java.util.Map#remove(java.lang.Object)
*/
public Boolean remove(Object key)
{
throw new UnsupportedOperationException();
}
/* (non-Javadoc)
* @see java.util.Map#size()
*/
public int size()
{
return this.perms.size();
}
/* (non-Javadoc)
* @see java.util.Map#values()
*/
public Collection<Boolean> values()
{
throw new UnsupportedOperationException();
}
}