Jython Readline Loop Failure - PullRequest
       9

Jython Readline Loop Failure

0 голосов
/ 17 февраля 2012

**

РЕЗЮМЕ: Блок кода работает до тех пор, пока он не будет помещен в цикл for / while.

**

Я пытаюсь найти пользователей и атрибуты, и у меня есть рабочий фрагмент кода:

UID = "USERNAME"
cmd = SearchPrincipalsCommand()
cmd.setFilter(Filter.equal(PrincipalDTO.LOGINUID, UID))
cmd.setSystemFilter(Filter.empty())
cmd.setLimit(1)
cmd.setIdentitySourceGuid(api.idSource.getGuid())
cmd.setSecurityDomainGuid(api.domain.getGuid())
cmd.execute()
print cmd.getPrincipals()

Это прекрасно работает, как вы можете видеть ниже:

массив ([guid: ims.3868d297c110650a044a67da8ca2a7b7

Теперь я добавляю цикл через файл. При этом выполняются все команды для каждой из трех записей, кроме cmd.execute () , который выполняется только для последней.

for UID in f.readlines():
    cmd = SearchPrincipalsCommand()
    cmd.setFilter(Filter.equal(PrincipalDTO.LOGINUID, UID))
    cmd.setSystemFilter(Filter.empty())
    cmd.setLimit(1)
    cmd.setIdentitySourceGuid(api.idSource.getGuid())
    cmd.setSecurityDomainGuid(api.domain.getGuid())
    cmd.execute()
    print cmd.getPrincipals()

, который возвращает результаты ТОЛЬКО для последнего файла:

массив ([]

* * +1025 массив ([]

массив ([guid: ims.3868d297c110650a044a67da8ca2a7b7

Дополнительная информация для публичного класса PrincipalDTO

PrincipalDTO расширяет Objectimplements Serializable, CommonDTOT это основной объект передачи данных (DTO) для принципалов. Это DTO используется вернуть все атрибуты принципала в операции поиска. это Класс также определяет два вида основных атрибутов: ядро атрибуты и системные атрибуты. Пожалуйста, обратитесь к SearchPrincipalsCommand использовать их правильно для основных поисков.

Примечание. Этот DTO нельзя использовать для обновления полей в принципале. использование ModificationDTO и UpdatePrincipalsCommand для обновлений принципала объекты.

public static final String LOGINUIDUser Идентификатор участника. Это основной атрибут.

См. Также: постоянные значения поля

setFilter public void setFilter (Фильтр фильтра) Устанавливает фильтр. это Фильтр может содержать критерии поиска по основному ядру и расширенный только атрибуты. Фильтр не может содержать системные атрибуты. к фильтруйте принципалов по системным атрибутам, используйте setSystemFilter (com.rsa.common.search.Filter).

Используйте Filter.empty (), когда фильтрация основных и расширенных атрибутов не выполняется необходимо.

Параметры: filter - Фильтр с ядром и расширенным атрибутом только критерии

равно открытый статический фильтр равен (String attributeName, логическое значение) Этот метод создает новый фильтр, который проверяет равенство.

Параметры: attributeName - значение строкового значения - логическое значение Возвращает: значение фильтра

Класс SearchPrincipalsCommand java.lang.Object
com.rsa.command.TargetableCommand com.rsa.admin.SearchPrincipalsCommand Все реализованные интерфейсы: Command, Serializable


открытый класс SearchPrincipalsCommandextends TargetableCommandSearches для принципалов в указанном источнике идентичности, которые соответствуют запросу критерии, указанные в фильтре и / или SystemFilter. администратор, вызывающий команду, должен иметь принципала представления разрешение в указанном домене безопасности и источник идентификации для операция, чтобы преуспеть. Результаты поиска можно получить из getPrincipals () после успешного вызова execute ().

Требуются следующие параметры:

• Идентификационный источник для поиска • Максимальное количество принципалов вернуть IdentitySourceGuid требуется во всех случаях, кроме случаев, когда указан массив основных идентификаторов GUID (см. ниже). В этом особенном случай, когда вы указали массив только основных GUID зарегистрированные принципы будут возвращены. В дополнение к GUID конкретный источник идентичности, специальный GUID Global.ALL_IDENTITY_SOURCES_ID может быть указан для поиска всей идентичности источники. Если указан Global.ALL_IDENTITY_SOURCES_ID, фильтры могут указывается только для основных атрибутов, а SystemFilter должен быть указано как ПУСТО.

Чтобы ограничить поиск конкретным доменом безопасности, используйте setSecurityDomainGuid (String). По умолчанию субдомены предоставлены сеТакже будет найден домен curity.Вы можете выбрать поиск только в данном домене безопасности, вызвав setSearchSubDomains (false).Если домен безопасности не задан, он будет возвращать принципалы из всего источника идентификации независимо от домена безопасности.

Критерии поиска В дополнение к домену безопасности клиенты могут дополнительно фильтровать результаты поиска по значениям основного атрибута, членству в группе и в пределах предварительно определенного набора основных GUID.Используйте метод setFilter (com.rsa.common.search.Filter), чтобы указать комбинации основных и расширенных атрибутов.Используйте setSystemFilter (com.rsa.common.search.Filter) для указания системных атрибутов.См. Документацию отдельных атрибутов (например, PrincipalDTO.FIRST_NAME, PrincipalDTO.LAST_UPDATED_ON и т. Д.), Чтобы определить, является ли это атрибут ядра или системный атрибут.Если фильтр не указан, используется пустой фильтр, указывающий, что все участники в комбинации домена безопасности / источника идентификаторов возвращаются до предела поиска.

Примечание по использованию фильтра: Фильтр равно ("") не вернет все записи.Вместо этого используйте startWith ("").

Метод setGroupGuid (java.lang.String) используется для указания того, что результаты являются членами группы.Если он не указан, возвращаются все результаты независимо от членства в группе.

Чтобы указать конкретный набор основных GUID для поиска, используйте setOnlyPrincipals (java.lang.String []).По определению действительны только GUID для зарегистрированных пользователей.

Маски атрибутов По умолчанию все атрибуты CORE и SYSTEM выбираются из базы данных.Метод setAttributeMask (java.lang.String []) используется для указания альтернативного списка основных атрибутов, возвращаемых для каждого принципала, найденного поиском.Может быть указан любой из главных атрибутов (включая расширенные атрибуты).Кроме того, могут быть указаны следующие специальные токены.(См. PrincipalDTO для полного списка доступных предопределенных атрибутов.)

• ALL_ATTRIBUTES • CORE_ATTRIBUTES • SYSTEM_ATTRIBUTES • ALL_EXTENDED_ATTRIBUTES • ALL_INTRINSIC_ATTRIBUTES Например: Чтобы указать основные атрибуты и описание, используйте следующие: [new] [setA]{"CORE_ATTRIBUTES", PrincipalDTO.DESCRIPTION});

Чтобы получить функциональность до версии 2.0 (все основные, системные и расширенные атрибуты), используйте следующее: setAttributeMask (new String [] {"ALL_ATTRIBUTES", "ALL_EXTENDED_ATTRIBUTES"});

См. Также: Сериализованная форма С тех пор: IMS 2.0

WSDL Примечание. Для поддержки WSDL предоставляются определенные методы set и get.Если заданные методы вызываются до выполнения команды, значение устанавливается, но игнорируется при выполнении команды.Он также заменяется данными, возвращаемыми с сервера.Если заданные методы вызываются после выполнения команды, новые данные перезаписывают данные, возвращаемые с сервера.Методы get просто возвращают данные, как установлено в команде.


execute public void execute () выдает CommandException, SystemExceptionExecutes выполняет команду в цели (см. CommandTarget), заданную параметромкомандная политика.

Определяется: execute в интерфейсе. Переопределения команд: execute в классе TargetableCommand. Throws: CommandException - базовое исключение всех исключений команд.Объявление этого исключения гарантирует, что любые будущие обновления, которые вводят дополнительные исключения для команд, не нарушают существующий клиентский код.SystemException - если происходит системная ошибка. InsuidPrivilegeException - если администратор не имеет соответствующего разрешения для выполнения действия InvalidArgumentException - если этой команде требуется больше данных для правильного выполнения, DataNotFoundException - если субъект не существует вСистема См. также: Command.execute ()


...