/* * Copyright (c) 2018 Amartus. All rights reserved. * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Bartosz Michalik <[email protected]> */ package com.mrv.yangtools.codegen.impl.postprocessor; import com.mrv.yangtools.common.Tuple; import io.swagger.models.ComposedModel; import io.swagger.models.Model; import io.swagger.models.RefModel; import io.swagger.models.Swagger; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** * Replace empty definitions with definition parent * @author [email protected] */ public class ReplaceEmptyWithParent extends ReplaceDefinitionsProcessor { @Override protected Map<String, String> prepareForReplacement(Swagger swagger) { return swagger.getDefinitions().entrySet() .stream().filter(e -> { Model model = e.getValue(); if (model instanceof ComposedModel) { List<Model> allOf = ((ComposedModel) model).getAllOf(); return allOf.size() == 1 && allOf.get(0) instanceof RefModel; } return false; }).map(e -> { RefModel ref = (RefModel) ((ComposedModel) e.getValue()).getAllOf().get(0); return new Tuple<>(e.getKey(), ref.getSimpleRef()); }).collect(Collectors.toMap(Tuple::first, Tuple::second)); } }