code: protected void updatePerson(final LoginContext _login,
                                  final Person _person)
          throws EFapsException
      {
          for (final JAASSystem system : JAASSystem.getAllJAASSystems()) {
              final Set<?> users = _login.getSubject().getPrincipals(system.getPersonJAASPrincipleClass());
              for (final Object persObj : users) {
                  try {
                      for (final Map.Entry<Person.AttrName, Method> entry
                              : system.getPersonMethodAttributes().entrySet()) {
                          _person.updateAttrValue(entry.getKey(), (String) entry.getValue().invoke(persObj));
                      }
                  } catch (final IllegalAccessException e) {
                      LoginHandler.LOG.error("could not execute a person method for system " + system.getName(), e);
                      throw new EFapsException(LoginHandler.class, "IllegalAccessException", e);
                  } catch (final IllegalArgumentException e) {
                      LoginHandler.LOG.error("could not execute a person method for system " + system.getName(), e);
                      throw new EFapsException(LoginHandler.class, "IllegalArgumentException", e);
                  } catch (final InvocationTargetException e) {
                      LoginHandler.LOG.error("could not execute a person method for system " + system.getName(), e);
                      throw new EFapsException(LoginHandler.class, "InvocationTargetException", e);
                  }
              }
          }
          _person.commitAttrValuesInDB();
      }
docs: The person information inside eFaps is update with information from JAAS
  login context.
  
  @param _login    JAAS login context
  @param _person   Java person instance inside eFaps to update
  @throws EFapsException if a method of the principals inside the JAAS
  login contexts could not be executed or the
  person could not be updated from the values in
  the JAAS login context.