From 85700c5a74c52ea53c2f4570688f0c79c2e03952 Mon Sep 17 00:00:00 2001 From: JoostCore Date: Tue, 27 Apr 2021 21:49:16 +0200 Subject: [PATCH] Fixed a Array JsonParsing Problem with Gson. You can add now infinity Arrays of Maps to tag categories and downloads for example. --- pom.xml | 5 ++ .../woocommerce/DefaultHttpClient.java | 49 +++++++++++++------ .../integration/WooCommerceClientTest.java | 9 +++- 3 files changed, 46 insertions(+), 17 deletions(-) diff --git a/pom.xml b/pom.xml index 9444510..8270949 100644 --- a/pom.xml +++ b/pom.xml @@ -77,6 +77,11 @@ test + + com.google.code.gson + gson + 2.8.6 + diff --git a/src/main/java/com/icoderman/woocommerce/DefaultHttpClient.java b/src/main/java/com/icoderman/woocommerce/DefaultHttpClient.java index e392865..a855135 100644 --- a/src/main/java/com/icoderman/woocommerce/DefaultHttpClient.java +++ b/src/main/java/com/icoderman/woocommerce/DefaultHttpClient.java @@ -1,24 +1,22 @@ package com.icoderman.woocommerce; -import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; +import com.google.gson.Gson; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; -import org.apache.http.client.methods.HttpDelete; -import org.apache.http.client.methods.HttpEntityEnclosingRequestBase; -import org.apache.http.client.methods.HttpGet; -import org.apache.http.client.methods.HttpPost; -import org.apache.http.client.methods.HttpPut; -import org.apache.http.client.methods.HttpRequestBase; +import org.apache.http.client.methods.*; import org.apache.http.client.utils.URIBuilder; -import org.apache.http.entity.ByteArrayEntity; import org.apache.http.entity.ContentType; +import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClientBuilder; import org.apache.http.message.BasicNameValuePair; import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.Reader; import java.net.URISyntaxException; import java.util.ArrayList; import java.util.List; @@ -94,13 +92,11 @@ public Map delete(String url, Map params) { } private Map postEntity(Map objectForJson, HttpEntityEnclosingRequestBase httpPost) { - try { - HttpEntity entity = new ByteArrayEntity(this.mapper.writeValueAsBytes(objectForJson), ContentType.APPLICATION_JSON); - httpPost.setEntity(entity); - return getEntityAndReleaseConnection(httpPost, Map.class); - } catch (JsonProcessingException e) { - throw new RuntimeException(e); - } + Gson gson = new Gson(); + System.out.println(gson.toJson(objectForJson)); + HttpEntity entity = new StringEntity(gson.toJson(objectForJson), ContentType.APPLICATION_JSON); + httpPost.setEntity(entity); + return getEntityAndReleaseConnection(httpPost, Map.class); } private List getParametersAsList(Map params) { @@ -117,6 +113,7 @@ private T getEntityAndReleaseConnection(HttpRequestBase httpRequest, Class T getEntityAndReleaseConnection(HttpRequestBase httpRequest, Class productInfo = new HashMap<>(); productInfo.put("name", "Premium Quality"); productInfo.put("type", "simple"); - productInfo.put("regular_price", "21.99"); + productInfo.put("regular_price", "168.06"); + productInfo.put("downloadable", true); + productInfo.put("download_expiry", "30"); + productInfo.put("virtual", true); productInfo.put("description", "Pellentesque habitant morbi tristique senectus et netus"); + Map product = wooCommerce.create(EndpointBaseType.PRODUCTS.getValue(), productInfo); Assert.assertNotNull(product); }