Не уверены, почему возвращаемый массив пуст - PullRequest
0 голосов
/ 28 декабря 2018

У меня проблема с массивом, возвращаемым пустым, и я не уверен, где проблема.

При щелчке по предоставленной ссылке с именем человека, используя angularjs, имя, по которому щелкнули, отправляется в качестве параметра в класс Java с именем APPservlet.java, в котором затем выполняется этот код.

case "personName": {
        try {
            ldapAuthenticationServiceAccess.getADPersonInfo(session.getAttribute("personName").toString());
        } catch (NullPointerException e) {
            e.printStackTrace();
            log.error(e);
        }
        jsonObject = new JSONObject();
        jsonArray = new JSONArray();
        tmpJSONObject = new JSONObject();
        try {
            PersonADInfo info = new PersonADInfo();

            tmpJSONObject = new JSONObject();
            tmpJSONObject.put("name", info.getName());
            tmpJSONObject.put("email", info.getEmail());
            tmpJSONObject.put("sector", info.getSector());
            tmpJSONObject.put("workplace", info.getWorkplace());
            jsonArray.put(tmpJSONObject);

            jsonObject.put("person", jsonArray);
        } catch (JSONException e) {
            e.printStackTrace();
            e.getMessage();
            log.error(e);
        }

        writer.println(jsonObject.toString());

    }
        break;

Когда вызывается этот класс java, внутри него вызывается метод getADPersonInfo (String), который находится внутри класса java LDAPAuthenticationServiceAccess.java, и его целью является подключение к LDAP, а затем кобъявление, чтобы получить информацию о пользователе.Затем эта информация передается в класс PersonADInfo.java, который содержит методы получения и установки.Вот код:

    public void getADPersonInfo(String username) {      

    String returnedAttributePerson[] = {"distinguishedName", "givenName" , "sAMAccountName" };

    String searchFilterPerson = "(&(objectClass=user)(displayName=" + username + "))";
    String searchBasePerson = "DC=Something,DC=local";

    SearchControls searchCtlsPerson = new SearchControls();
    searchCtlsPerson.setSearchScope(SearchControls.SUBTREE_SCOPE);
    searchCtlsPerson.setReturningAttributes(returnedAttributePerson);
    LdapContext ctxGCPERSON = null;
    try {
    ctxGCPERSON = new InitialLdapContext(env, null);
    NamingEnumeration<?> answerPERSON = ctxGCPERSON.search(searchBasePerson, searchFilterPerson,
            searchCtlsPerson);

    while (answerPERSON.hasMoreElements()) {
        SearchResult srPERSON = (SearchResult) answerPERSON.next();
        Attributes attrsPERSON = srPERSON.getAttributes();
        PersonADInfo personADInfo = new PersonADInfo();
        personADInfo.setName(username);
        personADInfo.setEmail(attrsPERSON.get("distinguishedName").get().toString());
        personADInfo.setSector(attrsPERSON.get("givenName").get().toString());
        personADInfo.setWorkplace(attrsPERSON.get("sAMAccountName").get().toString());

    }
} catch (NamingException e) {
    log.error(e);
    e.printStackTrace();
}

}

Переменные, которые устанавливаются, предназначены только для целей тестирования и установлены только для того, чтобы увидеть, вернется ли что-нибудь.Пока единственное, что возвращается, это пустой массив, и я не уверен, в чем проблема, этот вид проекта для меня первый, поэтому я прошу вашего понимания, любая помощь приветствуется.Заранее спасибо!

Примечание: этот проект использует SSO, и поэтому каждый раз, когда я его тестирую, мне нужно загрузить файл war на удаленный сервер Tomcat.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...