/*
 * Copyright (c) 2024.
 * Lizenziert unter der EUPL, Version 1.2 oder - sobald
 * diese von der Europäischen Kommission genehmigt wurden -
 * Folgeversionen der EUPL ("Lizenz");
 * Sie dürfen dieses Werk ausschließlich gemäß
 * dieser Lizenz nutzen.
 * Eine Kopie der Lizenz finden Sie hier:
 *
 * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
 *
 * Sofern nicht durch anwendbare Rechtsvorschriften
 * gefordert oder in schriftlicher Form vereinbart, wird
 * die unter der Lizenz verbreitete Software "so wie sie
 * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
 * ausdrücklich oder stillschweigend - verbreitet.
 * Die sprachspezifischen Genehmigungen und Beschränkungen
 * unter der Lizenz sind dem Lizenztext zu entnehmen.
 */

package de.ozgcloud.token;

import org.mapstruct.CollectionMappingStrategy;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.ReportingPolicy;

@Mapper(unmappedTargetPolicy = ReportingPolicy.WARN, collectionMappingStrategy = CollectionMappingStrategy.ADDER_PREFERRED)
interface CheckTokenResultMapper {

	@Mapping(target = "unknownFields", ignore = true)
	@Mapping(target = "trustLevelBytes", ignore = true)
	@Mapping(target = "removeOtherFields", ignore = true)
	@Mapping(target = "postfachIdBytes", ignore = true)
	@Mapping(target = "otherFieldsOrBuilderList", ignore = true)
	@Mapping(target = "otherFieldsBuilderList", ignore = true)
	@Mapping(target = "mergeUnknownFields", ignore = true)
	@Mapping(target = "mergeFrom", ignore = true)
	@Mapping(target = "defaultInstanceForType", ignore = true)
	@Mapping(target = "clearOneof", ignore = true)
	@Mapping(target = "clearField", ignore = true)
	@Mapping(target = "allFields", ignore = true)
	@Mapping(target = "otherFieldsList", source = "attributes")
	GrpcTokenAttributes toTokenAttributes(TokenValidationResult validationResult);

	@Mapping(target = "unknownFields", ignore = true)
	@Mapping(target = "messageBytes", ignore = true)
	@Mapping(target = "mergeUnknownFields", ignore = true)
	@Mapping(target = "mergeFrom", ignore = true)
	@Mapping(target = "defaultInstanceForType", ignore = true)
	@Mapping(target = "clearOneof", ignore = true)
	@Mapping(target = "clearField", ignore = true)
	@Mapping(target = "allFields", ignore = true)
	@Mapping(target = "message", source = "errorMesssage")
	GrpcCheckError toCheckError(TokenValidationResult validationResult);
}