Mapstruct, Time - rlip/java GitHub Wiki

Mapstruct

        <mapstruct.version>1.5.0.Beta2</mapstruct.version>
        <lombok-mapstruct-binding.version>0.2.0</lombok-mapstruct-binding.version>
...
        <dependency>
            <groupId>org.mapstruct</groupId>
            <artifactId>mapstruct</artifactId>
            <version>${mapstruct.version}</version>
        </dependency>
...
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>${java.version}</source>
                    <target>${java.version}</target>
                    <annotationProcessorPaths>
                        <path>
                            <groupId>org.mapstruct</groupId>
                            <artifactId>mapstruct-processor</artifactId>
                            <version>${mapstruct.version}</version>
                        </path>
                        <path>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                            <version>${lombok.version}</version>
                        </path>
                        <path>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok-mapstruct-binding</artifactId>
                            <version>${lombok-mapstruct-binding.version}</version>
                        </path>
                    </annotationProcessorPaths>
                </configuration>
            </plugin>
...
    @Mapper(implementationName = "RouteMapperImpl")
    interface RouteMapper {
        RouteDto toDto(Route Route);
        Route toModel(RouteDto RouteDto);
    }

też mapstruct

import org.mapstruct.Mapper;

@Mapper(componentModel = "spring")
interface ProductMapper {
    ProductDto toDto(Product product);
    Product toModel(ProductDto productDto);
    ProductListItemDto toListItemDto(Product product);
}
@Mapper(componentModel = "spring", imports = Money.class)
public interface RestPaymentMapper {

    @Mapping(target = "id", source = "requestId")
    @Mapping(target = "value", expression = "java(Money.of(paymentRequestDto.getValue()))")
    PaymentRequest toPorts(PaymentRequestDto paymentRequestDto);

    @Mapping(target = "value", expression = "java(payment.value().toString())")
    PaymentDto toDto(Payment payment);

    @IterableMapping(elementTargetType = PaymentDto.class)
    List<PaymentDto> toDto(List<Payment> payments);

    ResultPageDto<PaymentDto> toDto(ResultPage<Payment> resultPage);


}

Time

public interface TimeMachine {
    SimpleDateFormat FORMATTER = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");

    Instant instant();
    String utcDateAsString();

    ZonedDateTime utcZonedDateTime();
}
----------
@Service
class TimeMachineReal implements TimeMachine {

    @Override
    public Instant instant() {
        return Instant.now();
    }

    @Override
    public String utcDateAsString() {
        return FORMATTER.format(new Date());
    }

    @Override
    public ZonedDateTime utcZonedDateTime() {
        return ZonedDateTime.now();
    }
}
----------
@FieldDefaults(level = AccessLevel.PRIVATE, makeFinal = true)
public class TestTimeMachine implements TimeMachine {
    public static final Clock TEST_CLOCK = Clock.fixed(Instant.parse("2022-01-01T11:22:00.000Z"), ZoneId.systemDefault());

    Clock clock;

    @Override
    public Instant instant() {
        return Instant.now(clock);
    }

    @Override
    public String utcDateAsString() {
        return FORMATTER.format(new Date(clock.millis()));
    }

    @Override
    public ZonedDateTime utcZonedDateTime() {
        return ZonedDateTime.now(clock);
    }

    private TestTimeMachine(Clock clock) {
        this.clock = clock;
    }

    public static TimeMachine init(String dateTime) {
        return TestTimeMachine.init(Instant.parse(dateTime));
    }

    public static TimeMachine init(Clock clock) {
        return new TestTimeMachine(clock);
    }

    public static TimeMachine init() {
        return new TestTimeMachine(TEST_CLOCK);
    }

    public static TimeMachine init(Instant instant) {
        return new TestTimeMachine(Clock.fixed(instant, ZoneId.systemDefault()));
    }
}
⚠️ **GitHub.com Fallback** ⚠️