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 }