@Override
  protected void executeQuery(DirectorySearcher directorySearcher) {
    LdapQueryData queryData = new LdapQueryDataImpl();
    queryData.setDomain(getDomain());
    queryData.setFilterParameters(new Object[] {getUserName().split("[@]", -1)[0]});
    queryData.setLdapQueryType(LdapQueryType.getUserByName);
    Object searchResult = directorySearcher.findOne(queryData);

    setReturnValue(populateUserData((LdapUser) searchResult, getDomain()));
    // if user is not null then action succeeded
    setSucceeded((getReturnValue() != null));
  }
  @Override
  protected void executeQuery(DirectorySearcher directorySearcher) {
    LdapUser user;

    LdapQueryData queryData = new LdapQueryDataImpl();
    queryData.setFilterParameters(new Object[] {getUserId()});
    queryData.setLdapQueryType(LdapQueryType.getUserByGuid);
    queryData.setDomain(getDomain());

    Object searchResult = directorySearcher.findOne(queryData);
    user = populateUserData((LdapUser) searchResult, getDomain());

    if (user != null) {
      GroupsDNQueryGenerator generator = createGroupsGeneratorForUser(user);
      List<LdapQueryData> partialQueries = generator.getLdapQueriesData();
      for (LdapQueryData partialQuery : partialQueries) {
        populateGroup(partialQuery, getDomain(), user.getGroups(), getLoginName(), getPassword());
      }
    }
    setReturnValue(user);
    setSucceeded(true);
  }