fix shiro logs looping issue
[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 import org.slf4j.Logger;
31 import org.slf4j.LoggerFactory;
32
33 import org.apache.shiro.subject.PrincipalCollection;
34
35 public class AAFPrincipalCollection implements PrincipalCollection {
36         
37         private static final long serialVersionUID = 558246013419818831L;
38         private static final Logger logger =  LoggerFactory.getLogger(AAFPrincipalCollection.class);
39         private static final Set<String> realmSet;
40         private final Principal principal;
41         private List<Principal> list=null;
42         private Set<Principal> set=null;
43
44         static {
45                 realmSet = new HashSet<String>();
46                 realmSet.add(AAFRealm.AAF_REALM);
47         }
48         
49         public AAFPrincipalCollection(Principal p) {
50                 principal = p;
51
52         }
53
54         public AAFPrincipalCollection(final String principalName) {
55                 principal =     new Principal() {
56                         private final String name = principalName;
57                         @Override
58                         public String getName() {
59                                 return name;
60                         }
61                 };
62         }
63
64         @Override
65         public Iterator<Principal> iterator() {
66                 return null;
67         }
68
69         @Override
70         public List<Principal> asList() {
71                 if(list==null) {
72                         list = new ArrayList<Principal>();
73                 }
74                 list.add(principal);
75                 return list;
76         }
77
78         @Override
79         public Set<Principal> asSet() {
80                 if(set==null) {
81                         set = new HashSet<Principal>();
82                 }
83                 set.add(principal);
84                 return set;
85         }
86
87         @SuppressWarnings("unchecked")
88         @Override
89         public <T> Collection<T> byType(Class<T> cls) {
90                 Collection<T> coll = new ArrayList<T>();
91                 if(cls.isAssignableFrom(Principal.class)) {
92                         coll.add((T)principal);
93                 }
94                 return coll;
95         }
96
97         @Override
98         public Collection<Principal> fromRealm(String realm) {
99                 if(AAFRealm.AAF_REALM.equals(realm)) {
100                         return asList();
101                 } else {
102                         return new ArrayList<Principal>();
103                 }
104         }
105
106         @Override
107         public Principal getPrimaryPrincipal() {
108                 return principal;
109         }
110
111         @Override
112         public Set<String> getRealmNames() {
113                 return realmSet;
114         }
115
116         @Override
117         public boolean isEmpty() {
118                 return principal==null;
119         }
120
121         @SuppressWarnings("unchecked")
122         @Override
123         public <T> T oneByType(Class<T> cls) {
124                 if(cls.isAssignableFrom(Principal.class)) {
125                         return (T)principal;
126                 }
127                 return null;
128         }
129
130 }