From 1f583e35ca6588c9d0bf1fa27dc7bc72b488b238 Mon Sep 17 00:00:00 2001 From: Bernd Hufmann Date: Mon, 20 Jan 2025 09:42:55 -0500 Subject: [PATCH] swagger: Add DataProviderCapabilities to swagger documentation Signed-off-by: Bernd Hufmann --- .../jersey/rest/core/model/DataProvider.java | 13 +++++-- .../rest/core/model/OutputCapabilities.java | 36 +++++++++++++++++++ 2 files changed, 46 insertions(+), 3 deletions(-) create mode 100644 trace-server/org.eclipse.tracecompass.incubator.trace.server.jersey.rest.core/src/org/eclipse/tracecompass/incubator/internal/trace/server/jersey/rest/core/model/OutputCapabilities.java diff --git a/trace-server/org.eclipse.tracecompass.incubator.trace.server.jersey.rest.core/src/org/eclipse/tracecompass/incubator/internal/trace/server/jersey/rest/core/model/DataProvider.java b/trace-server/org.eclipse.tracecompass.incubator.trace.server.jersey.rest.core/src/org/eclipse/tracecompass/incubator/internal/trace/server/jersey/rest/core/model/DataProvider.java index ac9590b1a..6a16bd265 100644 --- a/trace-server/org.eclipse.tracecompass.incubator.trace.server.jersey.rest.core/src/org/eclipse/tracecompass/incubator/internal/trace/server/jersey/rest/core/model/DataProvider.java +++ b/trace-server/org.eclipse.tracecompass.incubator.trace.server.jersey.rest.core/src/org/eclipse/tracecompass/incubator/internal/trace/server/jersey/rest/core/model/DataProvider.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2021 Ericsson + * Copyright (c) 2021, 2025 Ericsson * * All rights reserved. This program and the accompanying materials are made * available under the terms of the Eclipse Public License 2.0 which @@ -56,12 +56,19 @@ enum ProviderType { /** * @return optional parent Id */ - @Schema(required = false, description = "Optional parent Id for grouping purposes for example of derived data providers.") + @Schema(description = "Optional parent Id for grouping purposes for example of derived data providers.") String getParentId(); /** * @return the input configuration used to create this data provider. */ - @Schema(required = false, description = "Optional input configuration used to create this derived data provider.") + @Schema(description = "Optional input configuration used to create this derived data provider.") Configuration getConfiguration(); + + /** + * @return optional output capabilities. + */ + @Schema(description = "Optional output capabilities, such as 'canCreate' and 'canDelete'. If absent, all capabilities are 'false'.") + OutputCapabilities getCapabilities(); + } diff --git a/trace-server/org.eclipse.tracecompass.incubator.trace.server.jersey.rest.core/src/org/eclipse/tracecompass/incubator/internal/trace/server/jersey/rest/core/model/OutputCapabilities.java b/trace-server/org.eclipse.tracecompass.incubator.trace.server.jersey.rest.core/src/org/eclipse/tracecompass/incubator/internal/trace/server/jersey/rest/core/model/OutputCapabilities.java new file mode 100644 index 000000000..9f0af3a90 --- /dev/null +++ b/trace-server/org.eclipse.tracecompass.incubator.trace.server.jersey.rest.core/src/org/eclipse/tracecompass/incubator/internal/trace/server/jersey/rest/core/model/OutputCapabilities.java @@ -0,0 +1,36 @@ +/******************************************************************************* + * Copyright (c) 2025 Ericsson + * + * All rights reserved. This program and the accompanying materials are made + * available under the terms of the Eclipse Public License 2.0 which + * accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + *******************************************************************************/ + +package org.eclipse.tracecompass.incubator.internal.trace.server.jersey.rest.core.model; + +import com.fasterxml.jackson.annotation.JsonProperty; + +import io.swagger.v3.oas.annotations.media.Schema; + +/** + * Contributes to the model used for TSP swagger-core annotations. + */ +public interface OutputCapabilities { + + /** + * @return The name. + */ + @JsonProperty("canCreate") + @Schema(description = "Optional, whether this output (data provider) can create derived outputs (data providers). 'false' if absent.") + boolean canCreate(); + + /** + * @return The ID. + */ + @Schema(description = "Optional, whether this output (data provider) can be deleted. 'false' if absent.") + @JsonProperty("canDelete") + boolean canDelete(); +}