gluu
公開メンバ関数 | 非公開メンバ関数 | 非公開変数類 | 全メンバ一覧
org.gluu.oxtrust.service.scim2.Scim2GroupService クラス
org.gluu.oxtrust.service.scim2.Scim2GroupService の継承関係図
Inheritance graph
org.gluu.oxtrust.service.scim2.Scim2GroupService 連携図
Collaboration graph

公開メンバ関数

void transferAttributesToGroupResource (GluuGroup gluuGroup, GroupResource res, String groupsUrl, String usersUrl)
 
void createGroup (GroupResource group, String groupsUrl, String usersUrl) throws Exception
 
GroupResource updateGroup (String id, GroupResource group, String groupsUrl, String usersUrl) throws Exception
 
void deleteGroup (GluuGroup gluuGroup) throws Exception
 
void replaceGroupInfo (GluuGroup gluuGroup, GroupResource group, String groupsUrl, String usersUrl) throws Exception
 
PagedResult< BaseScimResourcesearchGroups (String filter, String sortBy, SortOrder sortOrder, int startIndex, int count, String groupsUrl, String usersUrl, int maxCount) throws Exception
 

非公開メンバ関数

void transferAttributesToGroup (GroupResource res, GluuGroup group, String usersUrl)
 
void assignComputedAttributesToGroup (GluuGroup gluuGroup) throws Exception
 
void syncMemberAttributeInPerson (String groupDn, List< String > beforeMemberDns, List< String > afterMemberDns)
 

非公開変数類

Logger log
 
IPersonService personService
 
IGroupService groupService
 
ExternalScimService externalScimService
 
OrganizationService organizationService
 
ExtensionService extService
 
ScimFilterParserService scimFilterParserService
 
PersistenceEntryManager ldapEntryManager
 

詳解

著者
Val Pecaoco Re-engineered by jgomer on 2017-10-18.

関数詳解

◆ assignComputedAttributesToGroup()

void org.gluu.oxtrust.service.scim2.Scim2GroupService.assignComputedAttributesToGroup ( GluuGroup  gluuGroup) throws Exception
inlineprivate
112  {
113 
114  String inum = groupService.generateInumForNewGroup();
115  String dn = groupService.getDnForGroup(inum);
116 
117  gluuGroup.setInum(inum);
118  gluuGroup.setDn(dn);
119  gluuGroup.setIname(groupService.generateInameForNewGroup(gluuGroup.getDisplayName().replaceAll(" ", "")));
120 
121  }
abstract String generateInameForNewGroup(String name)
abstract String getDnForGroup(String inum)
IGroupService groupService
Definition: Scim2GroupService.java:54

◆ createGroup()

void org.gluu.oxtrust.service.scim2.Scim2GroupService.createGroup ( GroupResource  group,
String  groupsUrl,
String  usersUrl 
) throws Exception
inline

Inserts a new group in LDAP based on the SCIM Resource passed There is no need to check attributes mutability in this case as there are no original attributes (the resource does not exist yet)

引数
groupA GroupResource object with all info as received by the web service
例外
Exception
172  {
173 
174  String groupName=group.getDisplayName();
175  log.info("Preparing to create group {}", groupName);
176 
177  GluuGroup gluuGroup=new GluuGroup();
178  transferAttributesToGroup(group, gluuGroup, usersUrl);
180 
181  String location= groupsUrl + "/" + gluuGroup.getInum();
182  gluuGroup.setAttribute("oxTrustMetaLocation", location);
183 
184  log.info("Persisting group {}", groupName);
185 
186  if (externalScimService.isEnabled()){
187  boolean result = externalScimService.executeScimCreateGroupMethods(gluuGroup);
188  if (!result) {
189  throw new WebApplicationException("Failed to execute SCIM script successfully", Status.PRECONDITION_FAILED);
190  }
191  groupService.addGroup(gluuGroup);
192  syncMemberAttributeInPerson(gluuGroup.getDn(), null, gluuGroup.getMembers());
193 
194  //Copy back to group the info from gluuGroup
195  transferAttributesToGroupResource(gluuGroup, group, groupsUrl, usersUrl);
197  }
198  else {
199  groupService.addGroup(gluuGroup);
200  group.getMeta().setLocation(location);
201  //We are ignoring the id value received (group.getId())
202  group.setId(gluuGroup.getInum());
203  syncMemberAttributeInPerson(gluuGroup.getDn(), null, gluuGroup.getMembers());
204  }
205 
206  }
void transferAttributesToGroup(GroupResource res, GluuGroup group, String usersUrl)
Definition: Scim2GroupService.java:71
abstract void addGroup(GluuGroup group)
void assignComputedAttributesToGroup(GluuGroup gluuGroup)
Definition: Scim2GroupService.java:112
boolean executeScimPostCreateGroupMethods(GluuGroup group)
Definition: ExternalScimService.java:356
Logger log
Definition: Scim2GroupService.java:48
void syncMemberAttributeInPerson(String groupDn, List< String > beforeMemberDns, List< String > afterMemberDns)
Definition: Scim2GroupService.java:300
void transferAttributesToGroupResource(GluuGroup gluuGroup, GroupResource res, String groupsUrl, String usersUrl)
Definition: Scim2GroupService.java:123
boolean executeScimCreateGroupMethods(GluuGroup group)
Definition: ExternalScimService.java:345
ExternalScimService externalScimService
Definition: Scim2GroupService.java:57
IGroupService groupService
Definition: Scim2GroupService.java:54

◆ deleteGroup()

void org.gluu.oxtrust.service.scim2.Scim2GroupService.deleteGroup ( GluuGroup  gluuGroup) throws Exception
inline
224  {
225  log.info("Removing group and updating user's entries");
226 
227  if (externalScimService.isEnabled()) {
228  boolean result = externalScimService.executeScimDeleteGroupMethods(gluuGroup);
229  if (!result) {
230  throw new WebApplicationException("Failed to execute SCIM script successfully", Status.PRECONDITION_FAILED);
231  }
232  }
233 
234  groupService.removeGroup(gluuGroup);
235 
236  if (externalScimService.isEnabled())
238 
239  }
boolean executeScimDeleteGroupMethods(GluuGroup group)
Definition: ExternalScimService.java:389
boolean executeScimPostDeleteGroupMethods(GluuGroup group)
Definition: ExternalScimService.java:400
abstract void removeGroup(GluuGroup group)
Logger log
Definition: Scim2GroupService.java:48
ExternalScimService externalScimService
Definition: Scim2GroupService.java:57
IGroupService groupService
Definition: Scim2GroupService.java:54

◆ replaceGroupInfo()

void org.gluu.oxtrust.service.scim2.Scim2GroupService.replaceGroupInfo ( GluuGroup  gluuGroup,
GroupResource  group,
String  groupsUrl,
String  usersUrl 
) throws Exception
inline
241  {
242 
243  List<String> olderMembers=new ArrayList<String>();
244  if (gluuGroup.getMembers()!=null)
245  olderMembers.addAll(gluuGroup.getMembers());
246 
247  transferAttributesToGroup(group, gluuGroup, usersUrl);
248  log.debug("replaceGroupInfo. Updating group info in LDAP");
249 
250  if (externalScimService.isEnabled()) {
251  boolean result = externalScimService.executeScimUpdateGroupMethods(gluuGroup);
252  if (!result) {
253  throw new WebApplicationException("Failed to execute SCIM script successfully", Status.PRECONDITION_FAILED);
254  }
255 
256  groupService.updateGroup(gluuGroup);
257  syncMemberAttributeInPerson(gluuGroup.getDn(), olderMembers, gluuGroup.getMembers());
258 
259  //Copy back to user the info from gluuGroup
260  transferAttributesToGroupResource(gluuGroup, group, groupsUrl, usersUrl);
262  }
263  else{
264  groupService.updateGroup(gluuGroup);
265  syncMemberAttributeInPerson(gluuGroup.getDn(), olderMembers, gluuGroup.getMembers());
266  }
267 
268  }
void transferAttributesToGroup(GroupResource res, GluuGroup group, String usersUrl)
Definition: Scim2GroupService.java:71
boolean executeScimUpdateGroupMethods(GluuGroup group)
Definition: ExternalScimService.java:367
Logger log
Definition: Scim2GroupService.java:48
void syncMemberAttributeInPerson(String groupDn, List< String > beforeMemberDns, List< String > afterMemberDns)
Definition: Scim2GroupService.java:300
boolean executeScimPostUpdateGroupMethods(GluuGroup group)
Definition: ExternalScimService.java:378
abstract void updateGroup(GluuGroup group)
void transferAttributesToGroupResource(GluuGroup gluuGroup, GroupResource res, String groupsUrl, String usersUrl)
Definition: Scim2GroupService.java:123
ExternalScimService externalScimService
Definition: Scim2GroupService.java:57
IGroupService groupService
Definition: Scim2GroupService.java:54

◆ searchGroups()

PagedResult<BaseScimResource> org.gluu.oxtrust.service.scim2.Scim2GroupService.searchGroups ( String  filter,
String  sortBy,
SortOrder  sortOrder,
int  startIndex,
int  count,
String  groupsUrl,
String  usersUrl,
int  maxCount 
) throws Exception
inline
271  {
272 
273  Filter ldapFilter=scimFilterParserService.createLdapFilter(filter, "inum=*", GroupResource.class);
274  log.info("Executing search for groups using: ldapfilter '{}', sortBy '{}', sortOrder '{}', startIndex '{}', count '{}'",
275  ldapFilter.toString(), sortBy, sortOrder.getValue(), startIndex, count);
276 
277  PagedResult<GluuGroup> list=ldapEntryManager.findPagedEntries(groupService.getDnForGroup(null),
278  GluuGroup.class, ldapFilter, null, sortBy, sortOrder, startIndex, count, maxCount);
279  List<BaseScimResource> resources=new ArrayList<BaseScimResource>();
280 
281  for (GluuGroup group: list.getEntries()){
282  GroupResource scimGroup=new GroupResource();
283  transferAttributesToGroupResource(group, scimGroup, groupsUrl, usersUrl);
284  //TODO: Delete this IF in the future - added for backwards compatibility with SCIM-Client <= 3.1.2.
285  if (scimGroup.getMembers()==null)
286  scimGroup.setMembers(new HashSet<Member>());
287 
288  resources.add(scimGroup);
289  }
290  log.info ("Found {} matching entries - returning {}", list.getTotalEntriesCount(), list.getEntries().size());
291 
292  PagedResult<BaseScimResource> result = new PagedResult<BaseScimResource>();
293  result.setEntries(resources);
294  result.setTotalEntriesCount(list.getTotalEntriesCount());
295 
296  return result;
297 
298  }
Filter createLdapFilter(String filter, String defaultStr, Class<? extends BaseScimResource > clazz)
Definition: ScimFilterParserService.java:78
Logger log
Definition: Scim2GroupService.java:48
void transferAttributesToGroupResource(GluuGroup gluuGroup, GroupResource res, String groupsUrl, String usersUrl)
Definition: Scim2GroupService.java:123
PersistenceEntryManager ldapEntryManager
Definition: Scim2GroupService.java:69
ScimFilterParserService scimFilterParserService
Definition: Scim2GroupService.java:66
abstract String getDnForGroup(String inum)
IGroupService groupService
Definition: Scim2GroupService.java:54

◆ syncMemberAttributeInPerson()

void org.gluu.oxtrust.service.scim2.Scim2GroupService.syncMemberAttributeInPerson ( String  groupDn,
List< String >  beforeMemberDns,
List< String >  afterMemberDns 
)
inlineprivate
300  {
301 
302  log.debug("syncMemberAttributeInPerson. Updating memberOf attribute in user LDAP entries");
303  log.trace("Before member dns {}; After member dns {}", beforeMemberDns, afterMemberDns);
304 
305  //Build 2 sets of DNs
306  Set<String> before=new HashSet<String>();
307  if (beforeMemberDns!=null)
308  before.addAll(beforeMemberDns);
309 
310  Set<String> after=new HashSet<String>();
311  if (afterMemberDns!=null)
312  after.addAll(afterMemberDns);
313 
314  //Do removals
315  for (String dn : before){
316  if (!after.contains(dn)){
317  try{
318  GluuCustomPerson gluuPerson = personService.getPersonByDn(dn);
319 
320  List<String> memberOf=new ArrayList<String>();
321  memberOf.addAll(gluuPerson.getMemberOf());
322  memberOf.remove(groupDn);
323 
324  gluuPerson.setMemberOf(memberOf);
325  personService.updatePerson(gluuPerson);
326  }
327  catch (Exception e){
328  log.error("An error occurred while removing user {} from group {}", dn, groupDn);
329  log.error(e.getMessage(), e);
330  }
331  }
332  }
333 
334  //Do insertions
335  for (String dn : after){
336  if (!before.contains(dn)){
337  try{
338  GluuCustomPerson gluuPerson = personService.getPersonByDn(dn);
339 
340  List<String> memberOf=new ArrayList<String>();
341  memberOf.add(groupDn);
342 
343  if (gluuPerson.getMemberOf()!=null)
344  memberOf.addAll(gluuPerson.getMemberOf());
345 
346  gluuPerson.setMemberOf(memberOf);
347  personService.updatePerson(gluuPerson);
348  }
349  catch (Exception e){
350  log.error("An error occurred while adding user {} to group {}", dn, groupDn);
351  log.error(e.getMessage(), e);
352  }
353  }
354  }
355 
356  }
abstract void updatePerson(GluuCustomPerson person)
abstract GluuCustomPerson getPersonByDn(String dn)
IPersonService personService
Definition: Scim2GroupService.java:51
Logger log
Definition: Scim2GroupService.java:48
void setMemberOf(List< String > value)
Definition: GluuCustomPerson.java:179

◆ transferAttributesToGroup()

void org.gluu.oxtrust.service.scim2.Scim2GroupService.transferAttributesToGroup ( GroupResource  res,
GluuGroup  group,
String  usersUrl 
)
inlineprivate
71  {
72 
73  //externalId (so oxTrustExternalId) not part of LDAP schema
74  group.setAttribute("oxTrustMetaCreated", res.getMeta().getCreated());
75  group.setAttribute("oxTrustMetaLastModified", res.getMeta().getLastModified());
76  //When creating group, location will be set again when having an inum
77  group.setAttribute("oxTrustMetaLocation", res.getMeta().getLocation());
78 
79  group.setDisplayName(res.getDisplayName());
80  group.setStatus(GluuStatus.ACTIVE);
81  group.setOrganization(organizationService.getDnForOrganization());
82 
83  //Add the members, and complement the $refs and users' display names in res
84  Set<Member> members=res.getMembers();
85  if (members!=null && members.size()>0){
86  List<String> listMembers = new ArrayList<String>();
87  List<Member> invalidMembers = new ArrayList<Member>();
88 
89  for (Member member : members){
90  String inum=member.getValue(); //it's not null as it is required in GroupResource
91  GluuCustomPerson person=personService.getPersonByInum(inum);
92 
93  if (person == null) {
94  log.info("Member identified by {} does not exist. Ignored", inum);
95  invalidMembers.add(member);
96  } else {
97  member.setDisplay(person.getDisplayName());
98  member.setRef(usersUrl + "/" + inum);
99  member.setType(ScimResourceUtil.getType(UserResource.class));
100 
101  listMembers.add(person.getDn());
102  }
103  }
104  group.setMembers(listMembers);
105 
106  members.removeAll(invalidMembers);
107  members = members.size() == 0 ? null : members;
108  res.setMembers(members);
109  }
110  }
String getDnForOrganization(String inum)
Definition: OrganizationService.java:106
OrganizationService organizationService
Definition: Scim2GroupService.java:60
IPersonService personService
Definition: Scim2GroupService.java:51
Logger log
Definition: Scim2GroupService.java:48
abstract GluuCustomPerson getPersonByInum(String inum)

◆ transferAttributesToGroupResource()

void org.gluu.oxtrust.service.scim2.Scim2GroupService.transferAttributesToGroupResource ( GluuGroup  gluuGroup,
GroupResource  res,
String  groupsUrl,
String  usersUrl 
)
inline
123  {
124 
125  res.setId(gluuGroup.getInum());
126 
127  Meta meta=new Meta();
128  meta.setResourceType(ScimResourceUtil.getType(res.getClass()));
129  meta.setCreated(gluuGroup.getAttribute("oxTrustMetaCreated"));
130  meta.setLastModified(gluuGroup.getAttribute("oxTrustMetaLastModified"));
131  meta.setLocation(gluuGroup.getAttribute("oxTrustMetaLocation"));
132  if (meta.getLocation()==null)
133  meta.setLocation(groupsUrl + "/" + gluuGroup.getInum());
134 
135  res.setMeta(meta);
136  res.setDisplayName(gluuGroup.getDisplayName());
137 
138  //Transfer members from GluuGroup to GroupResource
139  List<String> memberDNs =gluuGroup.getMembers();
140  if (memberDNs !=null){
141  Set<Member> members=new HashSet<Member>();
142 
143  for (String dn : memberDNs){
144  GluuCustomPerson person=null;
145  try{
146  person=personService.getPersonByDn(dn);
147  }
148  catch (Exception e){
149  log.warn("Wrong member entry {} found in group {}", dn, gluuGroup.getDisplayName());
150  }
151  if (person!=null){
152  Member aMember=new Member();
153  aMember.setValue(person.getInum());
154  aMember.setRef(usersUrl + "/" + person.getInum());
155  aMember.setType(ScimResourceUtil.getType(UserResource.class));
156  aMember.setDisplay(person.getDisplayName());
157 
158  members.add(aMember);
159  }
160  }
161  res.setMembers(members);
162  }
163  }
abstract GluuCustomPerson getPersonByDn(String dn)
IPersonService personService
Definition: Scim2GroupService.java:51
Logger log
Definition: Scim2GroupService.java:48

◆ updateGroup()

GroupResource org.gluu.oxtrust.service.scim2.Scim2GroupService.updateGroup ( String  id,
GroupResource  group,
String  groupsUrl,
String  usersUrl 
) throws Exception
inline
208  {
209 
210  GluuGroup gluuGroup = groupService.getGroupByInum(id); //This is never null (see decorator involved)
211  GroupResource tmpGroup=new GroupResource();
212  transferAttributesToGroupResource(gluuGroup, tmpGroup, groupsUrl, usersUrl);
213 
214  long now=System.currentTimeMillis();
215  tmpGroup.getMeta().setLastModified(ISODateTimeFormat.dateTime().withZoneUTC().print(now));
216 
217  tmpGroup=(GroupResource) ScimResourceUtil.transferToResourceReplace(group, tmpGroup, extService.getResourceExtensions(group.getClass()));
218  replaceGroupInfo(gluuGroup, tmpGroup, groupsUrl, usersUrl);
219 
220  return tmpGroup;
221 
222  }
abstract GluuGroup getGroupByInum(String inum)
void replaceGroupInfo(GluuGroup gluuGroup, GroupResource group, String groupsUrl, String usersUrl)
Definition: Scim2GroupService.java:241
List< Extension > getResourceExtensions(Class<? extends BaseScimResource > cls)
Definition: ExtensionService.java:46
void transferAttributesToGroupResource(GluuGroup gluuGroup, GroupResource res, String groupsUrl, String usersUrl)
Definition: Scim2GroupService.java:123
ExtensionService extService
Definition: Scim2GroupService.java:63
IGroupService groupService
Definition: Scim2GroupService.java:54

メンバ詳解

◆ externalScimService

ExternalScimService org.gluu.oxtrust.service.scim2.Scim2GroupService.externalScimService
private

◆ extService

ExtensionService org.gluu.oxtrust.service.scim2.Scim2GroupService.extService
private

◆ groupService

IGroupService org.gluu.oxtrust.service.scim2.Scim2GroupService.groupService
private

◆ ldapEntryManager

PersistenceEntryManager org.gluu.oxtrust.service.scim2.Scim2GroupService.ldapEntryManager
private

◆ log

Logger org.gluu.oxtrust.service.scim2.Scim2GroupService.log
private

◆ organizationService

OrganizationService org.gluu.oxtrust.service.scim2.Scim2GroupService.organizationService
private

◆ personService

IPersonService org.gluu.oxtrust.service.scim2.Scim2GroupService.personService
private

◆ scimFilterParserService

ScimFilterParserService org.gluu.oxtrust.service.scim2.Scim2GroupService.scimFilterParserService
private

このクラス詳解は次のファイルから抽出されました: