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

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

The newest version!
package com.qdesrame.openapi.diff.compare;

import com.qdesrame.openapi.diff.model.ChangedContent;
import com.qdesrame.openapi.diff.model.ChangedMediaType;
import io.swagger.v3.oas.models.media.Content;
import io.swagger.v3.oas.models.media.MediaType;

import java.util.*;

public class ContentDiff implements Comparable {

    private OpenApiDiff openApiDiff;

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

    @Override
    public boolean compare(Content left, Content right) {
        return false;
    }

    public Optional diff(Content left, Content right) {
        ChangedContent changedContent = new ChangedContent(left, right);

        MapKeyDiff mediaTypeDiff = MapKeyDiff.diff(left, right);
        changedContent.setIncreased(mediaTypeDiff.getIncreased());
        changedContent.setMissing(mediaTypeDiff.getMissing());
        List sharedMediaTypes = mediaTypeDiff.getSharedKey();
        Map changedMediaTypes = new HashMap<>();
        for (String mediaTypeKey : sharedMediaTypes) {
            MediaType oldMediaType = left.get(mediaTypeKey);
            MediaType newMediaType = right.get(mediaTypeKey);
            ChangedMediaType changedMediaType = new ChangedMediaType(oldMediaType.getSchema(), newMediaType.getSchema());
            openApiDiff.getSchemaDiff().diff(new HashSet<>(), oldMediaType.getSchema(), newMediaType.getSchema()).ifPresent(changedMediaType::setChangedSchema);
            if (changedMediaType.isDiff()) {
                changedMediaTypes.put(mediaTypeKey, changedMediaType);
            }
        }
        changedContent.setChanged(changedMediaTypes);
        return changedContent.isDiff() ? Optional.of(changedContent) : Optional.empty();
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy