import org.opendaylight.restconf.openapi.jaxrs.OpenApiBodyWriter;
import org.opendaylight.restconf.openapi.model.DeleteEntity;
import org.opendaylight.restconf.openapi.model.GetEntity;
+import org.opendaylight.restconf.openapi.model.GetRootEntity;
import org.opendaylight.restconf.openapi.model.ParameterEntity;
import org.opendaylight.restconf.openapi.model.ParameterSchemaEntity;
import org.opendaylight.restconf.openapi.model.PatchEntity;
final var result = new ArrayDeque<PathEntity>();
if (includeDataStore && !hasAddedDataStore) {
final var dataPath = basePath + DATA + urlPrefix;
- result.add(new PathEntity(dataPath,
- new GetEntity(null, deviceName, "data", null, null, false)));
+ result.add(new PathEntity(dataPath, new GetRootEntity(deviceName, "data")));
final var operationsPath = basePath + OPERATIONS + urlPrefix;
- result.add(new PathEntity(operationsPath,
- new GetEntity(null, deviceName, "operations", null, null, false)));
+ result.add(new PathEntity(operationsPath, new GetRootEntity(deviceName, "operations")));
hasAddedDataStore = true;
}
// RPC operations (via post) - RPCs have their own path
import org.opendaylight.yangtools.yang.model.api.ListSchemaNode;
import org.opendaylight.yangtools.yang.model.api.SchemaNode;
-public final class GetEntity extends OperationEntity {
+public sealed class GetEntity extends OperationEntity permits GetRootEntity {
private final boolean isConfig;
public GetEntity(final @Nullable SchemaNode schema, final @NonNull String deviceName,
--- /dev/null
+/*
+ * Copyright (c) 2024 PANTHEON.tech, s.r.o. and others. 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
+ */
+package org.opendaylight.restconf.openapi.model;
+
+import static java.util.Objects.requireNonNull;
+import static javax.ws.rs.core.Response.Status.OK;
+
+import com.fasterxml.jackson.core.JsonGenerator;
+import java.io.IOException;
+import javax.ws.rs.HttpMethod;
+import org.eclipse.jdt.annotation.NonNull;
+
+public final class GetRootEntity extends GetEntity {
+ private final String type;
+
+ public GetRootEntity(final @NonNull String deviceName, final @NonNull String type) {
+ super(null, deviceName, "", null, null, false);
+ this.type = requireNonNull(type);
+ }
+
+ @Override
+ public void generate(final @NonNull JsonGenerator generator) throws IOException {
+ generator.writeObjectFieldStart("get");
+ generator.writeStringField(DESCRIPTION, type.equals("data")
+ ? "Queries the config (startup) datastore on the mounted hosted."
+ : "Queries the available operations (RPC calls) on the mounted hosted.");
+ generator.writeObjectFieldStart(RESPONSES);
+ generator.writeObjectFieldStart(String.valueOf(OK.getStatusCode()));
+ generator.writeStringField(DESCRIPTION, "OK");
+ generator.writeEndObject(); //end of 200
+ generator.writeEndObject(); // end of responses
+ final var summary = HttpMethod.GET + " - " + deviceName() + " - datastore - " + type;
+ generator.writeStringField(SUMMARY, summary);
+ generator.writeArrayFieldStart("tags");
+ generator.writeString(deviceName() + " GET root");
+ generator.writeEndArray(); //end of tags
+ generator.writeEndObject(); //end of get
+ }
+}
package org.opendaylight.restconf.openapi.model;
import static java.util.Objects.requireNonNull;
-import static javax.ws.rs.core.Response.Status.OK;
import com.fasterxml.jackson.core.JsonGenerator;
import java.io.IOException;
import java.util.List;
-import javax.ws.rs.HttpMethod;
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.jdt.annotation.Nullable;
import org.opendaylight.yangtools.yang.model.api.SchemaNode;
@Override
public void generate(@NonNull JsonGenerator generator) throws IOException {
- if (schema() == null) {
- generateGetRoot(generator, moduleName());
- } else {
- generator.writeObjectFieldStart(operation());
- generateBasics(generator);
- generateRequestBody(generator);
- generateResponses(generator);
- generateTags(generator);
- generateParams(generator);
- generator.writeEndObject();
- }
+ generator.writeObjectFieldStart(operation());
+ generateBasics(generator);
+ generateRequestBody(generator);
+ generateResponses(generator);
+ generateTags(generator);
+ generateParams(generator);
+ generator.writeEndObject();
}
public void generateBasics(@NonNull JsonGenerator generator) throws IOException {
generator.writeEndObject();
generator.writeEndObject();
}
-
- void generateGetRoot(final @NonNull JsonGenerator generator, final @NonNull String resourceType)
- throws IOException {
- generator.writeObjectFieldStart("get");
- if (resourceType.equals("data")) {
- generator.writeStringField(DESCRIPTION, "Queries the config (startup) datastore on the mounted hosted.");
- } else if (resourceType.equals("operations")) {
- generator.writeStringField(DESCRIPTION,
- "Queries the available operations (RPC calls) on the mounted hosted.");
- }
- generator.writeObjectFieldStart(RESPONSES);
- generator.writeObjectFieldStart(String.valueOf(OK.getStatusCode()));
- generator.writeStringField(DESCRIPTION, "OK");
- generator.writeEndObject(); //end of 200
- generator.writeEndObject(); // end of responses
- final var summary = HttpMethod.GET + " - " + deviceName() + " - datastore - " + resourceType;
- generator.writeStringField(SUMMARY, summary);
- generator.writeArrayFieldStart("tags");
- generator.writeString(deviceName + " GET root");
- generator.writeEndArray(); //end of tags
- generator.writeEndObject(); //end of get
- }
}