[ofbiz-plugins] branch trunk updated: Improved: extract path parameters from declared path in rest.xml and add path parameters to OpenAPI(OFBIZ-11328)

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

[ofbiz-plugins] branch trunk updated: Improved: extract path parameters from declared path in rest.xml and add path parameters to OpenAPI(OFBIZ-11328)

grv-2
This is an automated email from the ASF dual-hosted git repository.

grv pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/ofbiz-plugins.git


The following commit(s) were added to refs/heads/trunk by this push:
     new dd27ea5  Improved: extract path parameters from declared path in rest.xml and add path parameters to OpenAPI(OFBIZ-11328)
dd27ea5 is described below

commit dd27ea556c659a54974aca42591088d814a14f27
Author: Girish Vasmatkar <[hidden email]>
AuthorDate: Wed Oct 14 21:00:03 2020 +0530

    Improved: extract path parameters from declared path in rest.xml and add path parameters to OpenAPI(OFBIZ-11328)
---
 .../org/apache/ofbiz/ws/rs/openapi/OFBizOpenApiReader.java  | 13 +++++++++++++
 .../main/java/org/apache/ofbiz/ws/rs/util/RestApiUtil.java  |  2 +-
 2 files changed, 14 insertions(+), 1 deletion(-)

diff --git a/ofbiz-rest-impl/src/main/java/org/apache/ofbiz/ws/rs/openapi/OFBizOpenApiReader.java b/ofbiz-rest-impl/src/main/java/org/apache/ofbiz/ws/rs/openapi/OFBizOpenApiReader.java
index a993fb1..86f0269 100644
--- a/ofbiz-rest-impl/src/main/java/org/apache/ofbiz/ws/rs/openapi/OFBizOpenApiReader.java
+++ b/ofbiz-rest-impl/src/main/java/org/apache/ofbiz/ws/rs/openapi/OFBizOpenApiReader.java
@@ -33,6 +33,7 @@ import org.apache.ofbiz.base.util.UtilValidate;
 import org.apache.ofbiz.service.DispatchContext;
 import org.apache.ofbiz.service.GenericServiceException;
 import org.apache.ofbiz.service.LocalDispatcher;
+import org.apache.ofbiz.service.ModelParam;
 import org.apache.ofbiz.service.ModelService;
 import org.apache.ofbiz.webapp.WebAppUtil;
 import org.apache.ofbiz.ws.rs.core.OFBizApiConfig;
@@ -41,6 +42,7 @@ import org.apache.ofbiz.ws.rs.model.ModelApi;
 import org.apache.ofbiz.ws.rs.model.ModelOperation;
 import org.apache.ofbiz.ws.rs.model.ModelResource;
 import org.apache.ofbiz.ws.rs.util.OpenApiUtil;
+import org.apache.ofbiz.ws.rs.util.RestApiUtil;
 
 import io.swagger.v3.jaxrs2.Reader;
 import io.swagger.v3.oas.integration.api.OpenAPIConfiguration;
@@ -56,6 +58,7 @@ import io.swagger.v3.oas.models.media.Schema;
 import io.swagger.v3.oas.models.media.StringSchema;
 import io.swagger.v3.oas.models.parameters.HeaderParameter;
 import io.swagger.v3.oas.models.parameters.Parameter;
+import io.swagger.v3.oas.models.parameters.PathParameter;
 import io.swagger.v3.oas.models.parameters.QueryParameter;
 import io.swagger.v3.oas.models.parameters.RequestBody;
 import io.swagger.v3.oas.models.responses.ApiResponse;
@@ -148,6 +151,16 @@ public final class OFBizOpenApiReader extends Reader implements OpenApiReader {
                         operation.setRequestBody(request);
                         operation.addParametersItem(HEADER_CONTENT_TYPE_JSON);
                     }
+                    List<String> pathParams = RestApiUtil.getPathParameters(uri);
+                    for (String pathParam : pathParams) {
+                        ModelParam mdParam = service.getInModelParamList().stream()
+                                .filter(param -> (!param.getInternal() && pathParam.equals(param.getName())))
+                                .findFirst().orElse(null);
+                        final PathParameter pathParameter = (PathParameter) new PathParameter().required(true)
+                                .description(mdParam != null ? mdParam.getShortDisplayDescription() : "")
+                                .name(pathParam);
+                        operation.addParametersItem(pathParameter);
+                    }
                     addServiceOutSchema(service);
                     addServiceInSchema(service);
                     addServiceOperationApiResponses(service, operation);
diff --git a/ofbiz-rest-impl/src/main/java/org/apache/ofbiz/ws/rs/util/RestApiUtil.java b/ofbiz-rest-impl/src/main/java/org/apache/ofbiz/ws/rs/util/RestApiUtil.java
index 3cce43c..fb7edba 100644
--- a/ofbiz-rest-impl/src/main/java/org/apache/ofbiz/ws/rs/util/RestApiUtil.java
+++ b/ofbiz-rest-impl/src/main/java/org/apache/ofbiz/ws/rs/util/RestApiUtil.java
@@ -84,7 +84,7 @@ public final class RestApiUtil {
         String[] pathParts = pathInfo.split("/");
         for (String pathSegement : pathParts) {
             if (pathSegement.startsWith("{") && pathSegement.endsWith("}")) {
-                pathParams.add(pathSegement);
+                pathParams.add(pathSegement.substring(1, pathSegement.length() - 1));
             }
         }
         return pathParams;