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

公開メンバ関数

void transferAttributesToUserResource (GluuCustomPerson person, UserResource res, String url)
 
void createUser (UserResource user, String url) throws Exception
 
UserResource updateUser (String id, UserResource user, String url) throws InvalidAttributeValueException
 
void replacePersonInfo (GluuCustomPerson gluuPerson, UserResource user, String url)
 
void deleteUser (GluuCustomPerson gluuPerson) throws Exception
 
PagedResult< BaseScimResourcesearchUsers (String filter, String sortBy, SortOrder sortOrder, int startIndex, int count, String url, int maxCount) throws Exception
 
void removePPIDsBranch (String dn)
 

関数

private< T > List< T > getAttributeListValue (GluuCustomPerson source, Class< T > clazz, String attrName)
 

非公開メンバ関数

String [] getComplexMultivaluedAsArray (List items)
 
void transferAttributesToPerson (UserResource res, GluuCustomPerson person)
 
void transferExtendedAttributesToPerson (BaseScimResource resource, GluuCustomPerson person)
 
void transferExtendedAttributesToResource (GluuCustomPerson person, BaseScimResource resource)
 
void writeCommonName (GluuCustomPerson person)
 
void assignComputedAttributesToPerson (GluuCustomPerson person)
 

非公開変数類

Logger log
 
AppConfiguration appConfiguration
 
MemberService memberService
 
IPersonService personService
 
IGroupService groupService
 
GroupWebService groupWS
 
ExternalScimService externalScimService
 
ServiceUtil serviceUtil
 
ExtensionService extService
 
ScimFilterParserService scimFilterParserService
 
PersistenceEntryManager ldapEntryManager
 

詳解

This class holds the most important business logic of the SCIM service for the resource type "User". It's devoted to taking objects of class UserResource, feeding instances of GluuCustomPerson, and do persistence to LDAP. The converse is also done: querying LDAP, and transforming GluuCustomPerson into UserResource

著者
Val Pecaoco Re-engineered by jgomer on 2017-09-15.

関数詳解

◆ assignComputedAttributesToPerson()

void org.gluu.oxtrust.service.scim2.Scim2UserService.assignComputedAttributesToPerson ( GluuCustomPerson  person)
inlineprivate
402  {
403 
404  String inum = personService.generateInumForNewPerson();
405  String dn = personService.getDnForPerson(inum);
406 
407  person.setInum(inum);
408  person.setDn(dn);
409  person.setIname(personService.generateInameForNewPerson(person.getUid()));
410  writeCommonName(person);
411 
412  }
abstract String getDnForPerson(String inum)
void writeCommonName(GluuCustomPerson person)
Definition: Scim2UserService.java:395
IPersonService personService
Definition: Scim2UserService.java:80
abstract String generateInameForNewPerson(String uid)

◆ createUser()

void org.gluu.oxtrust.service.scim2.Scim2UserService.createUser ( UserResource  user,
String  url 
) throws Exception
inline

Inserts a new user in LDAP based on the SCIM Resource passed

引数
userA UserResource object with all info as received by the web service
例外
Exception
419  {
420 
421  String userName=user.getUserName();
422  log.info("Preparing to create user {}", userName);
423 
424  //There is no need to check attributes mutability in this case as there are no original attributes
425  //(the resource does not exist yet)
426  GluuCustomPerson gluuPerson=new GluuCustomPerson();
427  transferAttributesToPerson(user, gluuPerson);
429 
430  String location=url + "/" + gluuPerson.getInum();
431  gluuPerson.setAttribute("oxTrustMetaLocation", location);
432 
433  log.info("Persisting user {}", userName);
435 
436  if (externalScimService.isEnabled()){
437  boolean result = externalScimService.executeScimCreateUserMethods(gluuPerson);
438  if (!result) {
439  throw new WebApplicationException("Failed to execute SCIM script successfully", Status.PRECONDITION_FAILED);
440  }
441 
442  personService.addPerson(gluuPerson);
443  //Copy back to user the info from gluuPerson
444  transferAttributesToUserResource(gluuPerson, user, url);
446  }
447  else {
448  personService.addPerson(gluuPerson);
449  user.getMeta().setLocation(location);
450  //We are ignoring the id value received (user.getId())
451  user.setId(gluuPerson.getInum());
452  }
453 
454  }
Logger log
Definition: Scim2UserService.java:71
boolean executeScimPostCreateUserMethods(GluuCustomPerson user)
Definition: ExternalScimService.java:290
void transferAttributesToPerson(UserResource res, GluuCustomPerson person)
Definition: Scim2UserService.java:149
abstract void addCustomObjectClass(GluuCustomPerson person)
ExternalScimService externalScimService
Definition: Scim2UserService.java:89
void transferAttributesToUserResource(GluuCustomPerson person, UserResource res, String url)
Definition: Scim2UserService.java:254
abstract void addPerson(GluuCustomPerson person)
boolean executeScimCreateUserMethods(GluuCustomPerson user)
Definition: ExternalScimService.java:279
IPersonService personService
Definition: Scim2UserService.java:80
void assignComputedAttributesToPerson(GluuCustomPerson person)
Definition: Scim2UserService.java:402

◆ deleteUser()

void org.gluu.oxtrust.service.scim2.Scim2UserService.deleteUser ( GluuCustomPerson  gluuPerson) throws Exception
inline
497  {
498 
499  String dn = gluuPerson.getDn();
500  if (gluuPerson.getMemberOf()!= null && gluuPerson.getMemberOf().size()>0) {
501  log.info("Removing user {} from groups", gluuPerson.getUid());
502  serviceUtil.deleteUserFromGroup(gluuPerson, dn);
503  }
504  log.info("Removing user entry {}", dn);
505 
506  if (externalScimService.isEnabled()) {
507  boolean result = externalScimService.executeScimDeleteUserMethods(gluuPerson);
508  if (!result) {
509  throw new WebApplicationException("Failed to execute SCIM script successfully", Status.PRECONDITION_FAILED);
510  }
511  }
512 
513  personService.removePerson(gluuPerson);
514 
515  if (externalScimService.isEnabled())
517 
518  }
Logger log
Definition: Scim2UserService.java:71
abstract void removePerson(GluuCustomPerson person)
ExternalScimService externalScimService
Definition: Scim2UserService.java:89
void deleteUserFromGroup(GluuCustomPerson person, String dn)
Definition: ServiceUtil.java:129
IPersonService personService
Definition: Scim2UserService.java:80
boolean executeScimPostDeleteUserMethods(GluuCustomPerson user)
Definition: ExternalScimService.java:334
boolean executeScimDeleteUserMethods(GluuCustomPerson user)
Definition: ExternalScimService.java:323
ServiceUtil serviceUtil
Definition: Scim2UserService.java:92

◆ getAttributeListValue()

private<T> List<T> org.gluu.oxtrust.service.scim2.Scim2UserService.getAttributeListValue ( GluuCustomPerson  source,
Class< T >  clazz,
String  attrName 
)
inlinepackage
125  {
126 
127  List<T> items = null;
128  try {
129  ObjectMapper mapper = ServiceUtil.getObjectMapper();
130  //This is already disabled in ServiceUtil
131  //mapper.disable(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES);
132 
133  String[] attributeArray = source.getAttributeArray(attrName);
134  if (attributeArray != null) {
135  items = new ArrayList<T>();
136  for (String attribute : attributeArray) {
137  T item = mapper.readValue(attribute, clazz);
138  items.add(item);
139  }
140  }
141  }
142  catch (Exception e){
143  log.error(e.getMessage(), e);
144  }
145  return items;
146 
147  }
Logger log
Definition: Scim2UserService.java:71

◆ getComplexMultivaluedAsArray()

String [] org.gluu.oxtrust.service.scim2.Scim2UserService.getComplexMultivaluedAsArray ( List  items)
inlineprivate
103  {
104 
105  String array[]=null;
106 
107  try {
108  if (items!=null && items.size()>0) {
109  ObjectMapper mapper = ServiceUtil.getObjectMapper();
110  List<String> itemList = new ArrayList<String>();
111 
112  for (Object item : items)
113  itemList.add(mapper.writeValueAsString(item));
114 
115  array = itemList.toArray(new String[]{});
116  }
117  }
118  catch (Exception e){
119  log.error(e.getMessage(), e);
120  }
121  return array;
122 
123  }
Logger log
Definition: Scim2UserService.java:71

◆ removePPIDsBranch()

void org.gluu.oxtrust.service.scim2.Scim2UserService.removePPIDsBranch ( String  dn)
inline
547  {
548  try {
549  ldapEntryManager.removeRecursively(String.format("ou=pairwiseIdentifiers,%s", dn));
550  }
551  catch (Exception e){
552  log.error(e.getMessage(), e);
553  }
554  }
Logger log
Definition: Scim2UserService.java:71
PersistenceEntryManager ldapEntryManager
Definition: Scim2UserService.java:101

◆ replacePersonInfo()

void org.gluu.oxtrust.service.scim2.Scim2UserService.replacePersonInfo ( GluuCustomPerson  gluuPerson,
UserResource  user,
String  url 
)
inline
473  {
474  transferAttributesToPerson(user, gluuPerson);
475  writeCommonName(gluuPerson);
476 
477  log.debug("replacePersonInfo. Updating person info in LDAP");
479 
480  if (externalScimService.isEnabled()){
481  boolean result = externalScimService.executeScimUpdateUserMethods(gluuPerson);
482  if (!result) {
483  throw new WebApplicationException("Failed to execute SCIM script successfully", Status.PRECONDITION_FAILED);
484  }
485 
486  personService.updatePerson(gluuPerson);
487  //Copy back to user the info from gluuPerson
488  transferAttributesToUserResource(gluuPerson, user, url);
490  }
491  else {
492  personService.updatePerson(gluuPerson);
493  }
494 
495  }
Logger log
Definition: Scim2UserService.java:71
void transferAttributesToPerson(UserResource res, GluuCustomPerson person)
Definition: Scim2UserService.java:149
abstract void updatePerson(GluuCustomPerson person)
abstract void addCustomObjectClass(GluuCustomPerson person)
ExternalScimService externalScimService
Definition: Scim2UserService.java:89
void transferAttributesToUserResource(GluuCustomPerson person, UserResource res, String url)
Definition: Scim2UserService.java:254
boolean executeScimPostUpdateUserMethods(GluuCustomPerson user)
Definition: ExternalScimService.java:312
void writeCommonName(GluuCustomPerson person)
Definition: Scim2UserService.java:395
boolean executeScimUpdateUserMethods(GluuCustomPerson user)
Definition: ExternalScimService.java:301
IPersonService personService
Definition: Scim2UserService.java:80

◆ searchUsers()

PagedResult<BaseScimResource> org.gluu.oxtrust.service.scim2.Scim2UserService.searchUsers ( String  filter,
String  sortBy,
SortOrder  sortOrder,
int  startIndex,
int  count,
String  url,
int  maxCount 
) throws Exception
inline
521  {
522 
523  Filter ldapFilter=scimFilterParserService.createLdapFilter(filter, "inum=*", UserResource.class);
524  log.info("Executing search for users using: ldapfilter '{}', sortBy '{}', sortOrder '{}', startIndex '{}', count '{}'",
525  ldapFilter.toString(), sortBy, sortOrder.getValue(), startIndex, count);
526 
527  PagedResult<GluuCustomPerson> list=ldapEntryManager.findPagedEntries(personService.getDnForPerson(null),
528  GluuCustomPerson.class, ldapFilter, null, sortBy, sortOrder, startIndex, count, maxCount);
529  List<BaseScimResource> resources=new ArrayList<BaseScimResource>();
530 
531  for (GluuCustomPerson person : list.getEntries()){
532  UserResource scimUsr=new UserResource();
533  transferAttributesToUserResource(person, scimUsr, url);
534  resources.add(scimUsr);
535  }
536  log.info ("Found {} matching entries - returning {}", list.getTotalEntriesCount(), list.getEntries().size());
537 
538  PagedResult<BaseScimResource> result = new PagedResult<BaseScimResource>();
539  result.setEntries(resources);
540  result.setTotalEntriesCount(list.getTotalEntriesCount());
541 
542  return result;
543 
544  }
Logger log
Definition: Scim2UserService.java:71
PersistenceEntryManager ldapEntryManager
Definition: Scim2UserService.java:101
Filter createLdapFilter(String filter, String defaultStr, Class<? extends BaseScimResource > clazz)
Definition: ScimFilterParserService.java:78
abstract String getDnForPerson(String inum)
void transferAttributesToUserResource(GluuCustomPerson person, UserResource res, String url)
Definition: Scim2UserService.java:254
IPersonService personService
Definition: Scim2UserService.java:80
ScimFilterParserService scimFilterParserService
Definition: Scim2UserService.java:98

◆ transferAttributesToPerson()

void org.gluu.oxtrust.service.scim2.Scim2UserService.transferAttributesToPerson ( UserResource  res,
GluuCustomPerson  person 
)
inlineprivate
149  {
150 
151  log.debug("transferAttributesToPerson");
152 
153  //Set values trying to follow the order found in BaseScimResource class
154  person.setAttribute("oxTrustExternalId", res.getExternalId());
155  person.setAttribute("oxTrustMetaCreated", res.getMeta().getCreated());
156  person.setAttribute("oxTrustMetaLastModified", res.getMeta().getLastModified());
157  //When creating user, location will be set again when having an inum
158  person.setAttribute("oxTrustMetaLocation", res.getMeta().getLocation());
159 
160  //Set values trying to follow the order found in UserResource class
161  person.setUid(res.getUserName());
162 
163  if (res.getName()!=null){
164  person.setGivenName(res.getName().getGivenName());
165  person.setSurname(res.getName().getFamilyName());
166  person.setAttribute("middleName", res.getName().getMiddleName());
167  person.setAttribute("oxTrusthonorificPrefix", res.getName().getHonorificPrefix());
168  person.setAttribute("oxTrusthonorificSuffix", res.getName().getHonorificSuffix());
169  person.setAttribute("oxTrustNameFormatted", res.getName().computeFormattedName());
170  }
171  person.setDisplayName(res.getDisplayName());
172 
173  person.setAttribute("nickname", res.getNickName());
174  person.setAttribute("oxTrustProfileURL", res.getProfileUrl());
175  person.setAttribute("oxTrustTitle", res.getTitle());
176  person.setAttribute("oxTrustUserType", res.getUserType());
177 
178  person.setPreferredLanguage(res.getPreferredLanguage());
179  person.setAttribute("locale", res.getLocale());
180  person.setTimezone(res.getTimezone());
181 
182  //Why are both gluuStatus and oxTrustActive used for active? it's for active being used in filter queries?
183  Boolean active=res.getActive()!=null && res.getActive();
184  person.setAttribute("oxTrustActive", active.toString());
185  person.setAttribute("gluuStatus", active ? GluuStatus.ACTIVE.getValue() : GluuStatus.INACTIVE.getValue());
186  person.setUserPassword(res.getPassword());
187 
188  person.setAttribute("oxTrustEmail", getComplexMultivaluedAsArray(res.getEmails()));
189  try {
190  person = serviceUtil.syncEmailForward(person, true);
191  }
192  catch (Exception e){
193  log.error("Problem syncing emails forward", e);
194  }
195 
196  person.setAttribute("oxTrustPhoneValue", getComplexMultivaluedAsArray(res.getPhoneNumbers()));
197  person.setAttribute("oxTrustImsValue", getComplexMultivaluedAsArray(res.getIms()));
198  person.setAttribute("oxTrustPhotos", getComplexMultivaluedAsArray(res.getPhotos()));
199  person.setAttribute("oxTrustAddresses", getComplexMultivaluedAsArray(res.getAddresses()));
200 
201  //group membership changes MUST be applied via the "Group" Resource (Section 4.1.2 & 8.7.1 RFC 7643) only
202 
203  person.setAttribute("oxTrustEntitlements", getComplexMultivaluedAsArray(res.getEntitlements()));
204  person.setAttribute("oxTrustRole", getComplexMultivaluedAsArray(res.getRoles()));
205  person.setAttribute("oxTrustx509Certificate", getComplexMultivaluedAsArray(res.getX509Certificates()));
206 
207  //Pairwise identifiers must not be supplied here... (they are mutability = readOnly)
208 
210 
211  }
Logger log
Definition: Scim2UserService.java:71
void transferExtendedAttributesToPerson(BaseScimResource resource, GluuCustomPerson person)
Definition: Scim2UserService.java:220
String [] getComplexMultivaluedAsArray(List items)
Definition: Scim2UserService.java:103
static GluuCustomPerson syncEmailForward(GluuCustomPerson gluuCustomPerson, boolean isScim2)
Definition: ServiceUtil.java:343
ServiceUtil serviceUtil
Definition: Scim2UserService.java:92

◆ transferAttributesToUserResource()

void org.gluu.oxtrust.service.scim2.Scim2UserService.transferAttributesToUserResource ( GluuCustomPerson  person,
UserResource  res,
String  url 
)
inline
254  {
255 
256  log.debug("transferAttributesToUserResource");
257 
258  res.setId(person.getInum());
259  res.setExternalId(person.getAttribute("oxTrustExternalId"));
260 
261  Meta meta=new Meta();
262  meta.setResourceType(ScimResourceUtil.getType(res.getClass()));
263 
264  meta.setCreated(person.getAttribute("oxTrustMetaCreated"));
265  if (meta.getCreated() == null) {
266  Date tmpDate = person.getCreationDate();
267  meta.setCreated(tmpDate == null ? null : ISODateTimeFormat.dateTime().withZoneUTC().print(tmpDate.getTime()));
268  }
269 
270  meta.setLastModified(person.getAttribute("oxTrustMetaLastModified"));
271  if (meta.getLastModified() == null) {
272  Date tmpDate = person.getUpdatedAt();
273  meta.setLastModified(tmpDate == null ? null : ISODateTimeFormat.dateTime().withZoneUTC().print(tmpDate.getTime()));
274  }
275 
276  meta.setLocation(person.getAttribute("oxTrustMetaLocation"));
277  if (meta.getLocation()==null)
278  meta.setLocation(url + "/" + person.getInum());
279 
280  res.setMeta(meta);
281 
282  //Set values in order of appearance in UserResource class
283  res.setUserName(person.getUid());
284 
285  Name name=new Name();
286  name.setGivenName(person.getGivenName());
287  name.setFamilyName(person.getSurname());
288  name.setMiddleName(person.getAttribute("middleName"));
289  name.setHonorificPrefix(person.getAttribute("oxTrusthonorificPrefix"));
290  name.setHonorificSuffix(person.getAttribute("oxTrusthonorificSuffix"));
291 
292  String formatted=person.getAttribute("oxTrustNameFormatted");
293  if (formatted==null) //recomputes the formatted name if absent in LDAP
294  name.computeFormattedName();
295  else
296  name.setFormatted(formatted);
297 
298  res.setName(name);
299  res.setDisplayName(person.getDisplayName());
300 
301  res.setNickName(person.getAttribute("nickname"));
302  res.setProfileUrl(person.getAttribute("oxTrustProfileURL"));
303  res.setTitle(person.getAttribute("oxTrustTitle"));
304  res.setUserType(person.getAttribute("oxTrustUserType"));
305 
306  res.setPreferredLanguage(person.getPreferredLanguage());
307  res.setLocale(person.getAttribute("locale"));
308  res.setTimezone(person.getTimezone());
309 
310  res.setActive(Boolean.valueOf(person.getAttribute("oxTrustActive"))
311  || GluuBoolean.getByValue(person.getAttribute("gluuStatus")).isBooleanValue());
312  res.setPassword(person.getUserPassword());
313 
314  res.setEmails(getAttributeListValue(person, Email.class, "oxTrustEmail"));
315  res.setPhoneNumbers(getAttributeListValue(person, PhoneNumber.class, "oxTrustPhoneValue"));
316  res.setIms(getAttributeListValue(person, InstantMessagingAddress.class, "oxTrustImsValue"));
317  res.setPhotos(getAttributeListValue(person, Photo.class, "oxTrustPhotos"));
318  res.setAddresses(getAttributeListValue(person, Address.class, "oxTrustAddresses"));
319 
320  List<String> listOfGroups = person.getMemberOf();
321  if (listOfGroups!= null && listOfGroups.size()>0) {
322  List<Group> groupList = new ArrayList<Group>();
323 
324  for (String groupDN : listOfGroups) {
325  try {
326  GluuGroup gluuGroup = groupService.getGroupByDn(groupDN);
327 
328  Group group = new Group();
329  group.setValue(gluuGroup.getInum());
330  String reference = groupWS.getEndpointUrl() + "/" + gluuGroup.getInum();
331  group.setRef(reference);
332  group.setDisplay(gluuGroup.getDisplayName());
333  group.setType(Group.Type.DIRECT); //Only support direct membership: see section 4.1.2 of RFC 7644
334 
335  groupList.add(group);
336  }
337  catch (Exception e){
338  log.warn("transferAttributesToUserResource. Group with dn {} could not be added to User Resource. {}", groupDN, person.getUid());
339  log.error(e.getMessage(), e);
340  }
341  }
342  if (groupList.size()>0)
343  res.setGroups(groupList);
344  }
345 
346  res.setEntitlements(getAttributeListValue(person, Entitlement.class, "oxTrustEntitlements"));
347  res.setRoles(getAttributeListValue(person, Role.class, "oxTrustRole"));
348  res.setX509Certificates(getAttributeListValue(person, X509Certificate.class, "oxTrustx509Certificate"));
349 
350  res.setPairwiseIdentitifers(person.getOxPPID());
351 
353  }
Logger log
Definition: Scim2UserService.java:71
abstract GluuGroup getGroupByDn(String Dn)
void transferExtendedAttributesToResource(GluuCustomPerson person, BaseScimResource resource)
Definition: Scim2UserService.java:355
IGroupService groupService
Definition: Scim2UserService.java:83
private< T > List< T > getAttributeListValue(GluuCustomPerson source, Class< T > clazz, String attrName)
Definition: Scim2UserService.java:125
String getEndpointUrl()
Definition: BaseScimWebService.java:71
GroupWebService groupWS
Definition: Scim2UserService.java:86

◆ transferExtendedAttributesToPerson()

void org.gluu.oxtrust.service.scim2.Scim2UserService.transferExtendedAttributesToPerson ( BaseScimResource  resource,
GluuCustomPerson  person 
)
inlineprivate

Takes all extended attributes found in the SCIM resource and copies them to a GluuCustomPerson This method is called after validations take place (see associated decorator for User Service), so all inputs are OK and can go straight to LDAP with no runtime surprises

引数
resourceA SCIM resource used as origin of data
persona GluuCustomPerson used as destination
220  {
221 
222  try {
223  //Gets all the extended attributes for this resource
224  Map<String, Object> extendedAttrs= resource.getCustomAttributes();
225 
226  //Iterates over all extensions this type of resource might have
227  for (Extension extension : extService.getResourceExtensions(resource.getClass())){
228  Object val=extendedAttrs.get(extension.getUrn());
229 
230  if (val!=null) {
231  //Obtains the attribute/value(s) pairs in the current extension
232  Map<String, Object> attrsMap = IntrospectUtil.strObjMap(val);
233 
234  for (String attribute : attrsMap.keySet()) {
235  Object value = attrsMap.get(attribute);
236 
237  //Ignore if the attribute is unassigned in this resource: destination will not be changed in this regard
238  if (value != null) {
239  //Get properly formatted string representations for the value(s) associated to the attribute
240  List<String> values=extService.getStringAttributeValues(extension.getFields().get(attribute), value);
241  log.debug("transferExtendedAttributesToPerson. Setting attribute '{}' with values {}", attribute, values.toString());
242  person.setAttribute(attribute, values.toArray(new String[]{}));
243  }
244  }
245  }
246  }
247  }
248  catch (Exception e){
249  log.error(e.getMessage(), e);
250  }
251 
252  }
Logger log
Definition: Scim2UserService.java:71
List< Extension > getResourceExtensions(Class<? extends BaseScimResource > cls)
Definition: ExtensionService.java:46
ExtensionService extService
Definition: Scim2UserService.java:95
List< String > getStringAttributeValues(ExtensionField field, Object valuesHolder)
Definition: ExtensionService.java:104

◆ transferExtendedAttributesToResource()

void org.gluu.oxtrust.service.scim2.Scim2UserService.transferExtendedAttributesToResource ( GluuCustomPerson  person,
BaseScimResource  resource 
)
inlineprivate
355  {
356 
357  log.debug("transferExtendedAttributesToResource of type {}", ScimResourceUtil.getType(resource.getClass()));
358 
359  //Gets the list of extensions associated to the resource passed. In practice, this will be at most a singleton list
360  List<Extension> extensions=extService.getResourceExtensions(resource.getClass());
361 
362  //Iterate over every extension to copy extended attributes from person to resource
363  for (Extension extension : extensions){
364  Map<String, ExtensionField> fields=extension.getFields();
365  //Create empty map to store the values of the extended attributes found for current extension in object person
366  Map<String, Object> map=new HashMap<String, Object>();
367 
368  log.debug("transferExtendedAttributesToResource. Revising attributes of extension '{}'", extension.getUrn());
369 
370  //Iterate over every attribute part of this extension
371  for (String attr : fields.keySet()){
372  //Gets the values associated to this attribute that were found in LDAP
373  String values[]=person.getAttributes(attr);
374 
375  if (values!=null){
376  log.debug("transferExtendedAttributesToResource. Copying to resource the value(s) for attribute '{}'", attr);
377 
378  ExtensionField field=fields.get(attr);
379  if (field.isMultiValued())
380  map.put(attr, extService.convertValues(field, values));
381  else
382  map.put(attr, extService.convertValues(field, values).get(0));
383  }
384  }
385  //Stores all extended attributes (with their values) in the resource object
386  if (map.size()>0) {
387  resource.addCustomAttributes(extension.getUrn(), map);
388  }
389  }
390  for (String urn : resource.getCustomAttributes().keySet())
391  resource.getSchemas().add(urn);
392 
393  }
Logger log
Definition: Scim2UserService.java:71
List< Object > convertValues(ExtensionField field, String strValues[])
Definition: ExtensionService.java:127
List< Extension > getResourceExtensions(Class<? extends BaseScimResource > cls)
Definition: ExtensionService.java:46
ExtensionService extService
Definition: Scim2UserService.java:95

◆ updateUser()

UserResource org.gluu.oxtrust.service.scim2.Scim2UserService.updateUser ( String  id,
UserResource  user,
String  url 
) throws InvalidAttributeValueException
inline
456  {
457 
458  GluuCustomPerson gluuPerson = personService.getPersonByInum(id); //This is never null (see decorator involved)
459  UserResource tmpUser=new UserResource();
460 
461  transferAttributesToUserResource(gluuPerson, tmpUser, url);
462 
463  long now=System.currentTimeMillis();
464  tmpUser.getMeta().setLastModified(ISODateTimeFormat.dateTime().withZoneUTC().print(now));
465 
466  tmpUser=(UserResource) ScimResourceUtil.transferToResourceReplace(user, tmpUser, extService.getResourceExtensions(user.getClass()));
467  replacePersonInfo(gluuPerson, tmpUser, url);
468 
469  return tmpUser;
470 
471  }
void transferAttributesToUserResource(GluuCustomPerson person, UserResource res, String url)
Definition: Scim2UserService.java:254
List< Extension > getResourceExtensions(Class<? extends BaseScimResource > cls)
Definition: ExtensionService.java:46
ExtensionService extService
Definition: Scim2UserService.java:95
abstract GluuCustomPerson getPersonByInum(String inum)
void replacePersonInfo(GluuCustomPerson gluuPerson, UserResource user, String url)
Definition: Scim2UserService.java:473
IPersonService personService
Definition: Scim2UserService.java:80

◆ writeCommonName()

void org.gluu.oxtrust.service.scim2.Scim2UserService.writeCommonName ( GluuCustomPerson  person)
inlineprivate
395  {
396 
397  if (StringUtils.isNotEmpty(person.getGivenName()) && StringUtils.isNotEmpty(person.getSurname()))
398  person.setCommonName(person.getGivenName() + " " + person.getSurname());
399 
400  }

メンバ詳解

◆ appConfiguration

AppConfiguration org.gluu.oxtrust.service.scim2.Scim2UserService.appConfiguration
private

◆ externalScimService

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

◆ extService

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

◆ groupService

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

◆ groupWS

GroupWebService org.gluu.oxtrust.service.scim2.Scim2UserService.groupWS
private

◆ ldapEntryManager

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

◆ log

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

◆ memberService

MemberService org.gluu.oxtrust.service.scim2.Scim2UserService.memberService
private

◆ personService

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

◆ scimFilterParserService

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

◆ serviceUtil

ServiceUtil org.gluu.oxtrust.service.scim2.Scim2UserService.serviceUtil
private

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