1 /*
2  * Licensed to the Apache Software Foundation (ASF) under one
3  * or more contributor license agreements.  See the NOTICE file
4  * distributed with this work for additional information
5  * regarding copyright ownership.  The ASF licenses this file
6  * to you under the Apache License, Version 2.0 (the
7  * "License"); you may not use this file except in compliance
8  * with the License.  You may obtain a copy of the License at
9  *
10  *     http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing,
13  * software distributed under the License is distributed on an
14  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15  * KIND, either express or implied.  See the License for the
16  * specific language governing permissions and limitations
17  * under the License.
18  */
19 module hunt.shiro.subject.MutablePrincipalCollection;
20 
21 import hunt.shiro.subject.PrincipalCollection;
22 import hunt.collection;
23 
24 
25 /**
26  * A {@link PrincipalCollection} that allows modification.
27  *
28  */
29 interface MutablePrincipalCollection : PrincipalCollection {
30 
31     /**
32      * Adds the given principal to this collection.
33      *
34      * @param principal the principal to be added.
35      * @param realmName the realm this principal came from.
36      */
37     void add(Object principal, string realmName);
38 
39     /**
40      * Adds all of the principals in the given collection to this collection.
41      *
42      * @param principals the principals to be added.
43      * @param realmName  the realm these principals came from.
44      */
45     void addAll(Collection!Object principals, string realmName);
46 
47     /**
48      * Adds all of the principals from the given principal collection to this collection.
49      *
50      * @param principals the principals to add.
51      */
52     void addAll(PrincipalCollection principals);
53 
54     /**
55      * Removes all Principals in this collection.
56      */
57     void clear();
58 }