elnafateh commented on code in PR #6008:
URL: https://github.com/apache/fineract/pull/6008#discussion_r3451962766


##########
integration-tests/src/test/java/org/apache/fineract/integrationtests/common/organisation/EntityDatatableChecksHelper.java:
##########
@@ -18,90 +18,53 @@
  */
 package org.apache.fineract.integrationtests.common.organisation;
 
-import com.google.gson.Gson;
-import io.restassured.specification.RequestSpecification;
-import io.restassured.specification.ResponseSpecification;
-import java.util.HashMap;
-import 
org.apache.fineract.client.models.PostEntityDatatableChecksTemplateResponse;
-import org.apache.fineract.client.util.JSON;
-import org.apache.fineract.integrationtests.common.Utils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class EntityDatatableChecksHelper {
+import static org.apache.fineract.client.feign.util.FeignCalls.ok;
 
-    private static final Logger LOG = 
LoggerFactory.getLogger(EntityDatatableChecksHelper.class);
-    private final RequestSpecification requestSpec;
-    private final ResponseSpecification responseSpec;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import feign.Headers;
+import feign.QueryMap;
+import feign.RequestLine;
+import java.util.List;
+import java.util.Map;
+import org.apache.fineract.client.feign.ObjectMapperFactory;
+import 
org.apache.fineract.client.models.DeleteEntityDatatableChecksTemplateResponse;
+import org.apache.fineract.client.models.GetEntityDatatableChecksResponse;
+import 
org.apache.fineract.client.models.PostEntityDatatableChecksTemplateRequest;
+import 
org.apache.fineract.client.models.PostEntityDatatableChecksTemplateResponse;
+import org.apache.fineract.integrationtests.common.FineractFeignClientHelper;
 
-    private static final String DATATABLE_CHECK_URL = 
"/fineract-provider/api/v1/entityDatatableChecks";
+public final class EntityDatatableChecksHelper {
 
-    private static final Gson GSON = new JSON().getGson();
+    private static final ObjectMapper MAPPER = ObjectMapperFactory.getShared();
 
-    // TODO: Rewrite to use fineract-client instead!
-    // Example: 
org.apache.fineract.integrationtests.common.loans.LoanTransactionHelper.disburseLoan(java.lang.Long,
-    // org.apache.fineract.client.models.PostLoansLoanIdRequest)
-    @Deprecated(forRemoval = true)
-    public EntityDatatableChecksHelper(final RequestSpecification requestSpec, 
final ResponseSpecification responseSpec) {
-        this.requestSpec = requestSpec;
-        this.responseSpec = responseSpec;
-    }
+    private EntityDatatableChecksHelper() {}
 
-    // TODO: Rewrite to use fineract-client instead!
-    // Example: 
org.apache.fineract.integrationtests.common.loans.LoanTransactionHelper.disburseLoan(java.lang.Long,
-    // org.apache.fineract.client.models.PostLoansLoanIdRequest)
-    @Deprecated(forRemoval = true)
-    public Integer createEntityDatatableCheck(final String apptableName, final 
String datatableName, final int status,
-            final Integer productId) {
-        return Utils.performServerPost(this.requestSpec, this.responseSpec, 
DATATABLE_CHECK_URL + "?" + Utils.TENANT_IDENTIFIER,
-                getTestEdcAsJSON(apptableName, datatableName, status, 
productId), "resourceId");
+    public static PostEntityDatatableChecksTemplateResponse 
createEntityDatatableCheck(final String apptableName,
+            final String datatableName, final Long status, final Long 
productId) {
+        PostEntityDatatableChecksTemplateRequest request = new 
PostEntityDatatableChecksTemplateRequest().entity(apptableName)
+                
.datatableName(datatableName).status(status).productId(productId);
+        return ok(() -> 
FineractFeignClientHelper.getFineractFeignClient().entityDataTable().createEntityDatatableCheck(request));
     }
 
-    // TODO: Rewrite to use fineract-client instead!
-    // Example: 
org.apache.fineract.integrationtests.common.loans.LoanTransactionHelper.disburseLoan(java.lang.Long,
-    // org.apache.fineract.client.models.PostLoansLoanIdRequest)
-    @Deprecated(forRemoval = true)
-    public PostEntityDatatableChecksTemplateResponse 
addEntityDatatableCheck(final String apptableName, final String datatableName,
-            final int status, final Integer productId) {
-        final String response = Utils.performServerPost(this.requestSpec, 
this.responseSpec,
-                DATATABLE_CHECK_URL + "?" + Utils.TENANT_IDENTIFIER, 
getTestEdcAsJSON(apptableName, datatableName, status, productId),
-                null);
-        return GSON.fromJson(response, 
PostEntityDatatableChecksTemplateResponse.class);
+    public static DeleteEntityDatatableChecksTemplateResponse 
deleteEntityDatatableCheck(final Long entityDatatableCheckId) {
+        return ok(() -> 
FineractFeignClientHelper.getFineractFeignClient().entityDataTable().deleteDatatable1(entityDatatableCheckId));
     }
 
-    // TODO: Rewrite to use fineract-client instead!
-    // Example: 
org.apache.fineract.integrationtests.common.loans.LoanTransactionHelper.disburseLoan(java.lang.Long,
-    // org.apache.fineract.client.models.PostLoansLoanIdRequest)
-    @Deprecated(forRemoval = true)
-    public Integer deleteEntityDatatableCheck(final Integer 
entityDatatableCheckId) {
-        return Utils.performServerDelete(requestSpec, responseSpec,
-                DATATABLE_CHECK_URL + "/" + entityDatatableCheckId + "?" + 
Utils.TENANT_IDENTIFIER, "resourceId");
+    // The generated EntityDataTableApi#retrieveAll4 incorrectly declares its 
return type as
+    // List<GetEntityDatatableChecksResponse>, but the server actually wraps 
results in a Page object:
+    // {"totalFilteredRecords": N, "pageItems": [...]}. Use a raw 
Map-returning interface to work around this.
+    public static List<GetEntityDatatableChecksResponse> 
retrieveEntityDatatableCheck() {
+        Map<String, Object> response = ok(() -> 
FineractFeignClientHelper.getFineractFeignClient().create(RawEntityDataTableApi.class)
+                .retrieveAll(Map.of("limit", -1)));
+        Object pageItems = response.get("pageItems");
+        return MAPPER.convertValue(pageItems,
+                MAPPER.getTypeFactory().constructCollectionType(List.class, 
GetEntityDatatableChecksResponse.class));
     }
 
-    // TODO: Rewrite to use fineract-client instead!
-    // Example: 
org.apache.fineract.integrationtests.common.loans.LoanTransactionHelper.disburseLoan(java.lang.Long,
-    // org.apache.fineract.client.models.PostLoansLoanIdRequest)
-    @Deprecated(forRemoval = true)
-    public String retrieveEntityDatatableCheck() {
-        return Utils.performServerGet(requestSpec, responseSpec, 
DATATABLE_CHECK_URL + "?" + Utils.TENANT_IDENTIFIER, null);
-    }
+    private interface RawEntityDataTableApi {
 
-    // TODO: Rewrite to use fineract-client instead!
-    // Example: 
org.apache.fineract.integrationtests.common.loans.LoanTransactionHelper.disburseLoan(java.lang.Long,
-    // org.apache.fineract.client.models.PostLoansLoanIdRequest)
-    @Deprecated(forRemoval = true)
-    public static String getTestEdcAsJSON(final String apptableName, final 
String datatableName, final int status,
-            final Integer productId) {
-        final HashMap<String, Object> map = new HashMap<>();
-        map.put("entity", apptableName);
-        map.put("status", status);
-        map.put("datatableName", datatableName);
-        if (productId != null) {
-            map.put("productId", productId);
-        }
-        String requestJsonString = new Gson().toJson(map);
-        LOG.info("map : {}", requestJsonString);
-        return requestJsonString;
+        @RequestLine("GET /v1/entityDatatableChecks")
+        @Headers("Accept: application/json")
+        Map<String, Object> retrieveAll(@QueryMap Map<String, Object> 
queryParams);

Review Comment:
   Yes, I have Fixed the annotation, regenerated the client, and now using the 
properly typed 



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to