Spring ldap 2.0.1 заменяет устаревший OdmManager

Кажется, что в Spring LDAP 2.x средство OdmManager устарело, так как большинство odm-подобных вещей можно сделать с помощью ldapTemplate, что верно. Но у OdmManager есть возможность внедрить ConverterManager, который может рассказать о ваших преобразованиях пользовательских типов. Каков эквивалентный метод использования ldapTemplate для операций, подобных odm (ConverterManager)?

Если в ldapTemplate нет эквивалентной системы, следует ли:

  1. неявно обнаруживать пользовательские классы с помощью конструкторов одной строки и методов класса String toString(), если они существуют как свойства, которые должны быть сопоставлены с атрибутами ldap или из них.

  2. неявно разрешить использование редакторов bean-компонентов для сопоставления текста с конкретным типом

  3. явно иметь некоторые средства, такие как менеджер преобразователя, в котором вы можете настроить это.

В качестве примера рассмотрим простой класс (который я хотел бы использовать как тип свойства bean-компонента, который будет сопоставлен с временной меткой ldap)

открытый класс LdapTimestamp {

static private Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("Australia/Brisbane"));
static private DateFormat toStringFormat;
static {
    toStringFormat = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT);
    toStringFormat.setCalendar(cal);
}
static private DateFormat nativeLdapFormat = new SimpleDateFormat("yyyyMMddHHmmssZ"); 

private Date dateTime; // GMT time

public LdapTimestamp(String ldapDateTimeString) throws ParseException {
    this.dateTime = nativeLdapFormat.parse(ldapDateTimeString);
}

public LdapTimestamp() {
    super();
}

public Date getDateTime() {
    return dateTime;
}

public void setDateTime(Date dateTimeObject) {
    this.dateTime = dateTimeObject;
}

public void setDateTime(String ldapDateTimeString) throws ParseException {
    this.dateTime = nativeLdapFormat.parse(ldapDateTimeString);
}

public String toStringShort() {
    return toStringFormat.format(dateTime);
}

public String toString() {
    return nativeLdapFormat.format(dateTime);
}

}

Цель состоит в том, чтобы bean-компонент изначально хранил объект Date, который можно использовать для сравнения диапазонов дат и т.п., при этом возвращая строку даты ldap за пределы bean-компонента как toString() и внутрь bean-компонента в качестве конструктора с одной строкой аргумент.

Кажется, это то, что предлагается с ConverterManager, но это новый код, поэтому я бы предпочел не использовать устаревший интерфейс OdmManager, если я могу его избежать. ConverterManager не устарел, но я не вижу очевидного способа связать его с ldapTemplate для использования.

Любые мысли будут приветствоваться.


person user3822582    schedule 10.07.2014    source источник


Ответы (1)


LdapTemplate имеет метод setObjectDirectoryMapper, который позволяет внедрить сконфигурированный ObjectDirectoryMapper (который соответствует OdmManager в предыдущих версиях). DefaultObjectDirectoryMapper можно настроить с помощью ConverterManager, поэтому я думаю, что все готово.

person marthursson    schedule 10.07.2014
comment
Кажется, пропустил это полностью, большое спасибо. - person user3822582; 21.07.2014