📄 sipcallpermissioncollection.java
字号:
/* * SipCallPermissionCollection.java * * Created on June 18, 2003, 10:27 AM */package gov.nist.security.permissions;import java.security.*;import java.util.*;/** * Class representing a collection of SipCallPermission * @author DERUELLE Jean */public class SipCallPermissionCollection extends PermissionCollection { /**set of SipCallPermissions*/ private Hashtable permissions; private boolean addedAdmin; /**mask of the actions*/ private int adminMask; /** * Creates a new instance of SipCallPermissionCollection */ SipCallPermissionCollection() { permissions = new Hashtable(); addedAdmin = false; } /** * Add a permission to the existing set of permission * @param p - the permission to add */ public void add(Permission p) { if (!(p instanceof SipCallPermission)) throw new IllegalArgumentException("Wrong permission type"); SipCallPermission sipCallPermission = (SipCallPermission) p; String name = sipCallPermission.getName(); SipCallPermission other =(SipCallPermission) permissions.get(name); if (other != null) sipCallPermission = merge(sipCallPermission, other); if (name.equals("*")) { addedAdmin = true; adminMask = sipCallPermission.mask; } permissions.put(name, sipCallPermission); } /** * return the permissions of the collection * @return the permissions of the collection */ public Enumeration elements() { return permissions.elements(); } /** * Checks if the specified permission's actions are "implied by" this object's actions. * @param p - the permission to check against. * @return if the specified permission is implied by this object, false if not. */ public boolean implies(Permission p) { if (!(p instanceof SipCallPermission)) return false; SipCallPermission sipCallPermission = (SipCallPermission) p; if (addedAdmin && (adminMask & sipCallPermission.mask) == sipCallPermission.mask) return true; Permission inTable = (Permission)permissions.get(sipCallPermission.getName()); if (inTable == null) return false; return inTable.implies(sipCallPermission); } /** * merge the two permissions * @param a - permssion to merge * @param b - permission to merge * @return the new permission created on the merging of the two permissions */ private SipCallPermission merge(SipCallPermission a, SipCallPermission b) { String aAction = a.getActions(); if (aAction.equals("")) return b; String bAction = b.getActions(); if (bAction.equals("")) return a; return new SipCallPermission(a.getName(),aAction + "," + bAction); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -