View Javadoc
1   package org.argeo.osgi.useradmin;
2   
3   import java.util.ArrayList;
4   import java.util.Arrays;
5   import java.util.Collection;
6   import java.util.Collections;
7   import java.util.List;
8   
9   import org.osgi.service.useradmin.Authorization;
10  
11  class AggregatingAuthorization implements Authorization {
12  	private final String name;
13  	private final String displayName;
14  	private final List<String> systemRoles;
15  	private final List<String> roles;
16  
17  	public AggregatingAuthorization(String name, String displayName,
18  			Collection<String> systemRoles, String[] roles) {
19  		this.name = name;
20  		this.displayName = displayName;
21  		this.systemRoles = Collections.unmodifiableList(new ArrayList<String>(
22  				systemRoles));
23  		this.roles = Collections.unmodifiableList(Arrays.asList(roles));
24  	}
25  
26  	@Override
27  	public String getName() {
28  		return name;
29  	}
30  
31  	@Override
32  	public boolean hasRole(String name) {
33  		if (systemRoles.contains(name))
34  			return true;
35  		if (roles.contains(name))
36  			return true;
37  		return false;
38  	}
39  
40  	@Override
41  	public String[] getRoles() {
42  		int size = systemRoles.size() + roles.size();
43  		List<String> res = new ArrayList<String>(size);
44  		res.addAll(systemRoles);
45  		res.addAll(roles);
46  		return res.toArray(new String[size]);
47  	}
48  
49  	@Override
50  	public int hashCode() {
51  		if (name == null)
52  			return super.hashCode();
53  		return name.hashCode();
54  	}
55  
56  	@Override
57  	public boolean equals(Object obj) {
58  		if (!(obj instanceof Authorization))
59  			return false;
60  		Authorization that = (Authorization) obj;
61  		if (name == null)
62  			return that.getName() == null;
63  		return name.equals(that.getName());
64  	}
65  
66  	@Override
67  	public String toString() {
68  		return displayName;
69  	}
70  
71  }