blob: 802573b53b34fd3f9e4c024120cb336367b92464 [file] [log] [blame]
/****************************************************************
* Licensed to the Apache Software Foundation (ASF) under one *
* or more contributor license agreements. See the NOTICE file *
* distributed with this work for additional information *
* regarding copyright ownership. The ASF licenses this file *
* to you under the Apache License, Version 2.0 (the *
* "License"); you may not use this file except in compliance *
* with the License. You may obtain a copy of the License at *
* *
* http://www.apache.org/licenses/LICENSE-2.0 *
* *
* Unless required by applicable law or agreed to in writing, *
* software distributed under the License is distributed on an *
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
* KIND, either express or implied. See the License for the *
* specific language governing permissions and limitations *
* under the License. *
****************************************************************/
package org.apache.james.dto;
import org.apache.james.json.DTO;
import org.apache.james.json.DTOConverter;
import org.apache.james.json.DTOModule;
public interface TestModules {
TestNestedModule<?, ?> FIRST_NESTED = DTOModule
.forDomainObject(FirstNestedType.class)
.convertToDTO(FirstNestedDTO.class)
.toDomainObjectConverter(FirstNestedDTO::toDomainObject)
.toDTOConverter((domainObject, typeName) -> new FirstNestedDTO(
domainObject.getFoo(),
typeName))
.typeName("first-nested")
.withFactory(TestNestedModule::new);
TestNestedModule<?, ?> SECOND_NESTED = DTOModule
.forDomainObject(SecondNestedType.class)
.convertToDTO(SecondNestedDTO.class)
.toDomainObjectConverter(SecondNestedDTO::toDomainObject)
.toDTOConverter((domainObject, typeName) -> new SecondNestedDTO(
domainObject.getBar(),
typeName))
.typeName("second-nested")
.withFactory(TestNestedModule::new);
DTOConverter<NestedType, DTO> NESTED_CONVERTERS = DTOConverter.of(FIRST_NESTED, SECOND_NESTED);
TestModule<FirstDomainObject, FirstDTO> FIRST_TYPE = DTOModule
.forDomainObject(FirstDomainObject.class)
.convertToDTO(FirstDTO.class)
.toDomainObjectConverter(dto -> dto.toDomainObject(NESTED_CONVERTERS))
.toDTOConverter((domainObject, typeName) -> new FirstDTO(
typeName,
domainObject.getId(),
domainObject.getTime().toString(),
domainObject.getPayload(),
domainObject.getChild().flatMap(NESTED_CONVERTERS::toDTO)))
.typeName("first")
.withFactory(TestModule::new);
TestModule<?, ?> SECOND_TYPE = DTOModule
.forDomainObject(SecondDomainObject.class)
.convertToDTO(SecondDTO.class)
.toDomainObjectConverter(dto -> dto.toDomainObject(NESTED_CONVERTERS))
.toDTOConverter((domainObject, typeName) -> new SecondDTO(
typeName,
domainObject.getId().toString(),
domainObject.getPayload(),
domainObject.getChild().flatMap(NESTED_CONVERTERS::toDTO)))
.typeName("second")
.withFactory(TestModule::new);
}