145968dee09cbab12451bf900b128f58bf8a6da8
[aaf/cadi.git] / shiro / src / main / java / org / onap / aaf / cadi / shiro / AAFPrincipalCollection.java
1 /**
2  * ============LICENSE_START====================================================
3  * org.onap.aaf
4  * ===========================================================================
5  * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
6  * ===========================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END====================================================
19  *
20  */
21 package org.onap.aaf.cadi.shiro;
22
23 import java.security.Principal;
24 import java.util.ArrayList;
25 import java.util.Collection;
26 import java.util.HashSet;
27 import java.util.Iterator;
28 import java.util.List;
29 import java.util.Set;
30
31 import org.apache.shiro.subject.PrincipalCollection;
32
33 public class AAFPrincipalCollection implements PrincipalCollection {
34         private static final long serialVersionUID = 558246013419818831L;
35         private static final Set<String> realmSet;
36         private final Principal principal;
37         private List<Principal> list=null;
38         private Set<Principal> set=null;
39
40         static {
41                 realmSet = new HashSet<String>();
42                 realmSet.add(AAFRealm.AAF_REALM);
43         }
44         
45         public AAFPrincipalCollection(Principal p) {
46                 principal = p;
47         }
48
49         public AAFPrincipalCollection(final String principalName) {
50                 principal =     new Principal() {
51                         private final String name = principalName;
52                         @Override
53                         public String getName() {
54                                 return name;
55                         }
56                 };
57         }
58
59         @Override
60         public Iterator<Principal> iterator() {
61                 return null;
62         }
63
64         @Override
65         public List<Principal> asList() {
66                 if(list==null) {
67                         list = new ArrayList<Principal>();
68                 }
69                 list.add(principal);
70                 return list;
71         }
72
73         @Override
74         public Set<Principal> asSet() {
75                 if(set==null) {
76                         set = new HashSet<Principal>();
77                 }
78                 set.add(principal);
79                 return set;
80         }
81
82         @SuppressWarnings("unchecked")
83         @Override
84         public <T> Collection<T> byType(Class<T> cls) {
85                 Collection<T> coll = new ArrayList<T>();
86                 if(cls.isAssignableFrom(Principal.class)) {
87                         coll.add((T)principal);
88                 }
89                 return coll;
90         }
91
92         @Override
93         public Collection<Principal> fromRealm(String realm) {
94                 if(AAFRealm.AAF_REALM.equals(realm)) {
95                         return asList();
96                 } else {
97                         return new ArrayList<Principal>();
98                 }
99         }
100
101         @Override
102         public Principal getPrimaryPrincipal() {
103                 return principal;
104         }
105
106         @Override
107         public Set<String> getRealmNames() {
108                 return realmSet;
109         }
110
111         @Override
112         public boolean isEmpty() {
113                 return principal==null;
114         }
115
116         @SuppressWarnings("unchecked")
117         @Override
118         public <T> T oneByType(Class<T> cls) {
119                 if(cls.isAssignableFrom(Principal.class)) {
120                         return (T)principal;
121                 }
122                 return null;
123         }
124
125 }