Search in sources :

Example 31 with Tag

use of io.swagger.v3.oas.models.tags.Tag in project swagger-core by swagger-api.

the class SpecFilter method filter.

public OpenAPI filter(OpenAPI openAPI, OpenAPISpecFilter filter, Map<String, List<String>> params, Map<String, String> cookies, Map<String, List<String>> headers) {
    OpenAPI filteredOpenAPI = filterOpenAPI(filter, openAPI, params, cookies, headers);
    if (filteredOpenAPI == null) {
        return filteredOpenAPI;
    }
    OpenAPI clone = new OpenAPI();
    clone.info(filteredOpenAPI.getInfo());
    clone.openapi(filteredOpenAPI.getOpenapi());
    clone.setExtensions(filteredOpenAPI.getExtensions());
    clone.setExternalDocs(filteredOpenAPI.getExternalDocs());
    clone.setSecurity(filteredOpenAPI.getSecurity());
    clone.setServers(filteredOpenAPI.getServers());
    clone.tags(filteredOpenAPI.getTags() == null ? null : new ArrayList<>(openAPI.getTags()));
    final Set<String> allowedTags = new HashSet<>();
    final Set<String> filteredTags = new HashSet<>();
    Paths clonedPaths = new Paths();
    if (filteredOpenAPI.getPaths() != null) {
        for (String resourcePath : filteredOpenAPI.getPaths().keySet()) {
            PathItem pathItem = filteredOpenAPI.getPaths().get(resourcePath);
            PathItem filteredPathItem = filterPathItem(filter, pathItem, resourcePath, params, cookies, headers);
            if (filteredPathItem != null) {
                PathItem clonedPathItem = new PathItem();
                clonedPathItem.set$ref(filteredPathItem.get$ref());
                clonedPathItem.setDescription(filteredPathItem.getDescription());
                clonedPathItem.setSummary(filteredPathItem.getSummary());
                clonedPathItem.setExtensions(filteredPathItem.getExtensions());
                clonedPathItem.setParameters(filteredPathItem.getParameters());
                clonedPathItem.setServers(filteredPathItem.getServers());
                Map<PathItem.HttpMethod, Operation> ops = filteredPathItem.readOperationsMap();
                for (Map.Entry<PathItem.HttpMethod, Operation> entry : ops.entrySet()) {
                    PathItem.HttpMethod key = entry.getKey();
                    Operation op = entry.getValue();
                    List<String> opTagsBeforeFilter = null;
                    if (op.getTags() != null) {
                        opTagsBeforeFilter = new ArrayList<>(op.getTags());
                    } else {
                        opTagsBeforeFilter = new ArrayList<>();
                    }
                    op = filterOperation(filter, op, resourcePath, key.toString(), params, cookies, headers);
                    clonedPathItem.operation(key, op);
                    if (op == null) {
                        filteredTags.addAll(opTagsBeforeFilter);
                    } else {
                        if (op.getTags() != null) {
                            opTagsBeforeFilter.removeAll(op.getTags());
                            allowedTags.addAll(op.getTags());
                        }
                        filteredTags.addAll(opTagsBeforeFilter);
                    }
                }
                if (!clonedPathItem.readOperations().isEmpty()) {
                    clonedPaths.addPathItem(resourcePath, clonedPathItem);
                }
            }
        }
        clone.paths(clonedPaths);
    }
    filteredTags.removeAll(allowedTags);
    final List<Tag> tags = clone.getTags();
    if (tags != null && !filteredTags.isEmpty()) {
        for (Iterator<Tag> it = tags.iterator(); it.hasNext(); ) {
            if (filteredTags.contains(it.next().getName())) {
                it.remove();
            }
        }
        if (clone.getTags().isEmpty()) {
            clone.setTags(null);
        }
    }
    if (filteredOpenAPI.getComponents() != null) {
        clone.components(new Components());
        clone.getComponents().setSchemas(filterComponentsSchema(filter, filteredOpenAPI.getComponents().getSchemas(), params, cookies, headers));
        clone.getComponents().setSecuritySchemes(filteredOpenAPI.getComponents().getSecuritySchemes());
        clone.getComponents().setCallbacks(filteredOpenAPI.getComponents().getCallbacks());
        clone.getComponents().setExamples(filteredOpenAPI.getComponents().getExamples());
        clone.getComponents().setExtensions(filteredOpenAPI.getComponents().getExtensions());
        clone.getComponents().setHeaders(filteredOpenAPI.getComponents().getHeaders());
        clone.getComponents().setLinks(filteredOpenAPI.getComponents().getLinks());
        clone.getComponents().setParameters(filteredOpenAPI.getComponents().getParameters());
        clone.getComponents().setRequestBodies(filteredOpenAPI.getComponents().getRequestBodies());
        clone.getComponents().setResponses(filteredOpenAPI.getComponents().getResponses());
    }
    if (filter.isRemovingUnreferencedDefinitions()) {
        clone = removeBrokenReferenceDefinitions(clone);
    }
    return clone;
}
Also used : ArrayList(java.util.ArrayList) Operation(io.swagger.v3.oas.models.Operation) Components(io.swagger.v3.oas.models.Components) PathItem(io.swagger.v3.oas.models.PathItem) Paths(io.swagger.v3.oas.models.Paths) Tag(io.swagger.v3.oas.models.tags.Tag) OpenAPI(io.swagger.v3.oas.models.OpenAPI) LinkedHashMap(java.util.LinkedHashMap) Map(java.util.Map) HashSet(java.util.HashSet)

Example 32 with Tag

use of io.swagger.v3.oas.models.tags.Tag in project swagger-core by swagger-api.

the class PetData method findPetByTags.

public List<Pet> findPetByTags(String tags) {
    String[] tagList = tags.split(",");
    List<Pet> result = new ArrayList<Pet>();
    for (Pet pet : pets) {
        if (null != pet.getTags()) {
            for (Tag tag : pet.getTags()) {
                for (String tagListString : tagList) {
                    if (tagListString.equals(tag.getName())) {
                        result.add(pet);
                    }
                }
            }
        }
    }
    return result;
}
Also used : ArrayList(java.util.ArrayList) Tag(io.swagger.v3.plugins.gradle.resources.model.Tag) Pet(io.swagger.v3.plugins.gradle.resources.model.Pet)

Example 33 with Tag

use of io.swagger.v3.oas.models.tags.Tag in project swagger-core by swagger-api.

the class ReaderListenerTest method testReaderListener.

@Test(description = "test a readerListener resource")
public void testReaderListener() throws Exception {
    Reader reader = new Reader(new OpenAPI());
    OpenAPI openAPI = reader.read(Collections.singleton(ReaderListenerResource.class));
    assertNotNull(openAPI);
    assertEquals(openAPI.getTags().get(0).getName(), "Tag-added-before-read");
    assertEquals(openAPI.getTags().get(1).getName(), "Tag-added-after-read");
}
Also used : ReaderListenerResource(io.swagger.v3.jaxrs2.resources.ReaderListenerResource) Reader(io.swagger.v3.jaxrs2.Reader) OpenAPI(io.swagger.v3.oas.models.OpenAPI) Test(org.testng.annotations.Test)

Example 34 with Tag

use of io.swagger.v3.oas.models.tags.Tag in project swagger-core by swagger-api.

the class PetData method findPetByTags.

public List<Pet> findPetByTags(String tags) {
    String[] tagList = tags.split(",");
    List<Pet> result = new ArrayList<Pet>();
    for (Pet pet : pets) {
        if (null != pet.getTags()) {
            for (Tag tag : pet.getTags()) {
                for (String tagListString : tagList) {
                    if (tagListString.equals(tag.getName())) {
                        result.add(pet);
                    }
                }
            }
        }
    }
    return result;
}
Also used : ArrayList(java.util.ArrayList) Tag(io.swagger.v3.jaxrs2.resources.model.Tag) Pet(io.swagger.v3.jaxrs2.resources.model.Pet)

Example 35 with Tag

use of io.swagger.v3.oas.models.tags.Tag in project swagger-core by swagger-api.

the class PetData method createPet.

static Pet createPet(long id, Category cat, String name, String[] urls, String[] tags, String status) {
    Pet pet = new Pet();
    pet.setId(id);
    pet.setCategory(cat);
    pet.setName(name);
    if (null != urls) {
        List<String> urlObjs = new ArrayList<String>();
        for (String urlString : urls) {
            urlObjs.add(urlString);
        }
        pet.setPhotoUrls(urlObjs);
    }
    List<Tag> tagObjs = new ArrayList<Tag>();
    int i = 0;
    if (null != tags) {
        for (String tagString : tags) {
            i = i + 1;
            Tag tag = new Tag();
            tag.setId(i);
            tag.setName(tagString);
            tagObjs.add(tag);
        }
    }
    pet.setTags(tagObjs);
    pet.setStatus(status);
    return pet;
}
Also used : ArrayList(java.util.ArrayList) Tag(io.swagger.v3.jaxrs2.resources.model.Tag) Pet(io.swagger.v3.jaxrs2.resources.model.Pet)

Aggregations

OpenAPI (io.swagger.v3.oas.models.OpenAPI)18 Schema (io.swagger.v3.oas.models.media.Schema)14 ArrayList (java.util.ArrayList)13 Tag (io.swagger.v3.oas.models.tags.Tag)12 Test (org.testng.annotations.Test)12 ArraySchema (io.swagger.v3.oas.models.media.ArraySchema)11 ObjectSchema (io.swagger.v3.oas.models.media.ObjectSchema)11 StringSchema (io.swagger.v3.oas.models.media.StringSchema)11 ComposedSchema (io.swagger.v3.oas.models.media.ComposedSchema)10 IntegerSchema (io.swagger.v3.oas.models.media.IntegerSchema)10 Operation (io.swagger.v3.oas.models.Operation)9 Components (io.swagger.v3.oas.models.Components)7 PathItem (io.swagger.v3.oas.models.PathItem)7 OpenAPIResolver (io.swagger.v3.parser.OpenAPIResolver)7 MediaType (io.swagger.v3.oas.models.media.MediaType)6 ApiResponse (io.swagger.v3.oas.models.responses.ApiResponse)6 Content (io.swagger.v3.oas.models.media.Content)5 ApiResponses (io.swagger.v3.oas.models.responses.ApiResponses)5 SwaggerParseResult (io.swagger.v3.parser.core.models.SwaggerParseResult)5 HashMap (java.util.HashMap)5