/** * Constructs an ACE for a given username, permission, specifying whether to grant or deny it, creator user, begin * and end date. * * @since 7.4 */ ACE(String username, String permission, boolean isGranted, String creator, Calendar begin, Calendar end, Map<String, Serializable> contextData) { this.username = username; this.permission = permission; this.isGranted = isGranted; this.creator = creator; setBegin(begin); setEnd(end); if (contextData != null) { this.contextData = new HashMap<>(contextData); } if (begin != null && end != null) { if (begin.after(end)) { throw new IllegalArgumentException("'begin' date cannot be after 'end' date"); } } }