All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.qdesrame.openapi.diff.compare.HeadersDiff Maven / Gradle / Ivy

There is a newer version: 1.2.0
Show newest version
package com.qdesrame.openapi.diff.compare;

import com.qdesrame.openapi.diff.model.ChangedHeader;
import com.qdesrame.openapi.diff.model.ChangedHeaders;
import io.swagger.v3.oas.models.headers.Header;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;

/**
 * Created by adarsh.sharma on 28/12/17.
 */
public class HeadersDiff {
    private OpenApiDiff openApiDiff;

    public HeadersDiff(OpenApiDiff openApiDiff) {
        this.openApiDiff = openApiDiff;
    }

    public Optional diff(Map left, Map right) {
        ChangedHeaders changedHeaders = new ChangedHeaders(left, right);
        MapKeyDiff headerMapDiff = MapKeyDiff.diff(left, right);
        changedHeaders.setIncreased(headerMapDiff.getIncreased());
        changedHeaders.setMissing(headerMapDiff.getMissing());
        List sharedHeaderKeys = headerMapDiff.getSharedKey();

        Map changed = new HashMap<>();
        for (String headerKey : sharedHeaderKeys) {
            Header oldHeader = left.get(headerKey);
            Header newHeader = right.get(headerKey);
            openApiDiff.getHeaderDiff().diff(oldHeader, newHeader)
                    .ifPresent(changedHeader -> changed.put(headerKey, changedHeader));
        }
        changedHeaders.setChanged(changed);

        return changedHeaders.isDiff() ? Optional.of(changedHeaders) : Optional.empty();
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy