B
Size: a a a
B
AE
R
B
AE
AE
AE
interface StringService { String getString() }Всё обернули, как будто получилось красиво.
class StringServiceImpl implements StringService { String getString() { return "hi"; }
class EncodingStringServiceWrapper implements StringService {
private StringService stringService;
public EncodingStringServiceWrapper(StringService stringService) { this.stringService = stringService; }
public String getString() {
return base64encode(stringService.getString());
}
private String base64encode(String s) { return "encodedhi" }
}
class SigningStringServiceWrapper implements StringService {
private StringService stringService;
public SigningStringServiceWrapper(StringService stringService) { this.stringService = stringService; }
public String getString() {
return sign(stringService.getString());
}
private String sign(String s) { return "signedencodedhi" }
}
String result = new SigningStringServiceWrapper(Тут, вроде, всё понятно. Теперь скажем, что наша единица данных - это не String, а большая бинарная штука, получаемая как InputStream. Как будто всё должно быть также, но нифига, потому что результат обработки Стринга - это Стринг, а результат обработки InputStream сторонней библиотекой - это OutputStream.
new EncodingStringServiceWrapper(
new StringServiceImpl() // привет, Егор
)
).getString();
interface BinaryService { BinaryDto getBinaryDto() }Чувак до меня не парился и просто пробросил HttpServletResponse через все слои логики. Что я считаю некошерно.
class BinaryServiceImpl implements BinaryService { BinaryDto getBinaryDto() { return new BinaryDto(read inputSteam from source); }
ThirdPartyBinaryServiceWrapper implements BinaryService {
private BinaryService binaryService;
BinaryDto getBinaryDto() {
BinaryDto binaryDto = binaryService.getBinaryDto();
thirdParty.process(binaryService.getBinaryDto().getInputStream(), ??resultOutputStream??);
binaryDto.setInputStream(?? convert resultOutputStream to inputStream ??);
return binaryDto;
}
}
thirdParty.process? Вариант с временным new ByteArrayOutputStream приводит к зависанию программы - видимо, созданный поток не читается.
DT
AE
R
Д
R
Д
AL
Jackson Core
для считывания и записи объектов в/из json-а. И у меня проблема с новым тайм апи, а именно с LocalTime
. Уже перерыл все. Зависимости jsr310
подключена, WRITE_DATES_AS_TIMESTAMPS
выключаю, Регистрацию модуля делаю objectMapper.registerModule(new JavaTimeModule());
, но все он отказывается работать с LocalTime
пока к полю не пропишешь явно сериализатор и десиарелазтор:@JsonSerialize(using = LocalTimeSerializer.class)
@JsonDeserialize(using = LocalTimeDeserializer.class)
VS
AE
Jackson Core
для считывания и записи объектов в/из json-а. И у меня проблема с новым тайм апи, а именно с LocalTime
. Уже перерыл все. Зависимости jsr310
подключена, WRITE_DATES_AS_TIMESTAMPS
выключаю, Регистрацию модуля делаю objectMapper.registerModule(new JavaTimeModule());
, но все он отказывается работать с LocalTime
пока к полю не пропишешь явно сериализатор и десиарелазтор:@JsonSerialize(using = LocalTimeSerializer.class)
@JsonDeserialize(using = LocalTimeDeserializer.class)
AE
VS
AE
Jackson Core
для считывания и записи объектов в/из json-а. И у меня проблема с новым тайм апи, а именно с LocalTime
. Уже перерыл все. Зависимости jsr310
подключена, WRITE_DATES_AS_TIMESTAMPS
выключаю, Регистрацию модуля делаю objectMapper.registerModule(new JavaTimeModule());
, но все он отказывается работать с LocalTime
пока к полю не пропишешь явно сериализатор и десиарелазтор:@JsonSerialize(using = LocalTimeSerializer.class)
@JsonDeserialize(using = LocalTimeDeserializer.class)
AL