Кажется, что в Spring LDAP 2.x средство OdmManager устарело, так как большинство odm-подобных вещей можно сделать с помощью ldapTemplate, что верно. Но у OdmManager есть возможность внедрить ConverterManager, который может рассказать о ваших преобразованиях пользовательских типов. Каков эквивалентный метод использования ldapTemplate для операций, подобных odm (ConverterManager)?
Если в ldapTemplate нет эквивалентной системы, следует ли:
неявно обнаруживать пользовательские классы с помощью конструкторов одной строки и методов класса String toString(), если они существуют как свойства, которые должны быть сопоставлены с атрибутами ldap или из них.
неявно разрешить использование редакторов bean-компонентов для сопоставления текста с конкретным типом
явно иметь некоторые средства, такие как менеджер преобразователя, в котором вы можете настроить это.
В качестве примера рассмотрим простой класс (который я хотел бы использовать как тип свойства 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 для использования.
Любые мысли будут приветствоваться.