◦ Value Objecty ◦ Mapování na VO vs na Entity ◦ IN -> Scalar -> VO ◦ OUT -> VO • Striktnost ◦ Přijímat pouze jeden jasně definovaný formát ▪ Email není lowercase => 400 ▪ Špatný formát data => 400 • Automatizace
= e.getAvailableModules().stream() .map(CustomerSubscriptionSystemModuleSerializable::fromSystemModule) .collect(Collectors.toSet()); return UnprocessableEntityException.builder() .withCode(ErrorCode.PRODUCT_GROUP_CUSTOMER_DOES_NOT_HAVE_SUBSCRIPTION_FOR_SYSTEM_MODULE) .withTitle("Customer does not have subscription for the system module") .withDetails(String.format( "Available modules are: %s", availableModules.stream() .map(CustomerSubscriptionSystemModuleSerializable::getValue) .collect(Collectors.joining(", ")) )) .addMeta("availableModules", availableModules) .build(e); }