Я пытаюсь преобразовать объект Java / Scala в сообщение «Буферы протокола».
Мой объект называется IDSNumber
, и у него есть метод doubleValue
, который возвращает java.lang.Double
.Я пытаюсь сделать так, чтобы он автоматически конвертировался в двойной при Dozer преобразовании объектов.
Я создал Dozer Custom Converter в Scala, здесь:
class IDSConverter extends DozerConverter[IDSNumber, java.lang.Double](classOf[IDSNumber], classOf[java.lang.Double]) {
def convertTo(source: IDSNumber, destination: java.lang.Double): java.lang.Double = {
source.doubleValue()
}
def convertFrom(source: java.lang.Double , destination: IDSNumber): IDSNumber = {
new IDSNumber(source)
}
}
Сообщение My Protocol Buffers выглядит следующим образом (shortFee
и longFee
следует преобразовать из типа IDSNumber
):
message PerformanceSettingMessage {
optional string displayCurrency = 1;
optional PeriodMessage performancePeriod = 2;
optional int64 conversionDate = 3;
optional BenchmarkOptionsMessage benchmarkOptions = 4;
optional string investmentStrategyMeaning = 5;
optional double shortFee = 6;
optional double longFee = 7;
}
Я пытаюсь использоватьконвертировать следующим образом:
val longFee = new IDSNumber(2.0)
val shortFee = new IDSNumber(3.0)
// newing up a real performance settings object with IDSNumbers for shortFee and longFee
val performanceSettings = new PerformanceSettings(Currency.apply("$"), period, fj.data.Option.none(), fj.data.Option.none(), Investment_Weighted, shortFee, longFee)
val mapper = new DozerBeanMapper() // new DozerMapper
val idsConverter = new IDSConverter() // my IDSNumber converter
mapper.setCustomConverters(java.util.Arrays.asList(idsConverter)) // make it use my IDSNumber converter
val msg = mapper.map(performanceSettings, classOf[PerformanceSettingMessage]) // map my real performanceSettings object to my PerformanceSettingsMessage generated by Protocol Buffers
Когда я запускаю приведенный выше код, msg
имеет shortFee
и longFee
, установленные на 0.0
вместо 2.0
и 3.0
.Есть мысли о том, что я делаю не так?Возможно, есть лучший способ (лучшая библиотека?) Конвертировать эти объекты назад и вперед?Спасибо!