package org.jblooming.security; import org.jblooming.PlatformRuntimeException; import java.io.Serializable; import java.lang.reflect.Field; import java.util.Map; public class Permission implements Comparable, Serializable { public String name; private Permission() { } public Permission(String name) { this.name = name; } public String getName() { return name; } public int compareTo(Object o) { if (o == null) return 0; else return name.compareTo(((Permission) o).getName()); } public boolean equals(Object o) { return this.compareTo(o) == 0; } /** * This method solves collection'identity */ public int hashCode() { return getName().hashCode(); } public static void addPermissions(Object permissionClassInstance, Map<String, Permission> permissions) { Field[] field = permissionClassInstance.getClass().getDeclaredFields(); for (int i = 0; i < field.length; i++) { Field field1 = field[i]; if (field1.getType().equals(Permission.class)) try { Permission perm = (Permission) field1.get(permissionClassInstance); permissions.put(perm.getName(), perm); } catch (IllegalAccessException e) { throw new PlatformRuntimeException(e); } } } public String toString() { return name; } }