Skip to content

Commit

Permalink
Fix for boolean properties in request builder
Browse files Browse the repository at this point in the history
shai-almog authored Mar 6, 2024

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
1 parent 4f1aca8 commit 0d2110a
Showing 1 changed file with 25 additions and 0 deletions.
25 changes: 25 additions & 0 deletions CodenameOne/src/com/codename1/io/rest/RequestBuilder.java
Original file line number Diff line number Diff line change
@@ -87,6 +87,7 @@ public class RequestBuilder {
private Boolean postParameters;
private Byte priority;
private boolean insecure;
private Boolean useBoolean;

RequestBuilder(String method, String url) {
this.method = method;
@@ -110,6 +111,17 @@ public RequestBuilder insecure(boolean insecure) {
return this;
}

/**
* Indicates if JSON should treat boolean values as Boolean. This values is set implicitly to true when reading property business objects
*
* @param useBoolean true to return Boolean objects in JSON Maps
* @return this request builder
*/
public RequestBuilder useBoolean(boolean useBoolean) {
this.useBoolean = useBoolean;
return this;
}

/**
* Sets the caching mode for this request, see {@link com.codename1.io.ConnectionRequest#getCacheMode()}
* @param cache the cache mode
@@ -584,6 +596,7 @@ public void actionPerformed(NetworkEvent evt) {
* @return returns the Connection Request object so it can be killed if necessary
*/
public ConnectionRequest fetchAsProperties(final OnComplete<Response<PropertyBusinessObject>> callback, final Class type) {
useBoolean(true);
final Connection request = createRequest(true);
request.addResponseListener(new ActionListener<NetworkEvent>() {
@Override
@@ -702,6 +715,7 @@ public Response<Map> getAsJsonMap() {
* @return Response Object
*/
public Response<PropertyBusinessObject> getAsProperties(Class type) {
useBoolean(true);
ConnectionRequest request = createRequest(true);
fetched = true;
CN.addToQueueAndWait(request);
@@ -725,6 +739,7 @@ public Response<PropertyBusinessObject> getAsProperties(Class type) {
* @return returns the Connection Request object so it can be killed if necessary
*/
public ConnectionRequest fetchAsPropertyList(final OnComplete<Response<List<PropertyBusinessObject>>> callback, final Class type, final String root) {
useBoolean(true);
final Connection request = createRequest(true);
request.addResponseListener(new ActionListener<NetworkEvent>() {
@Override
@@ -777,6 +792,7 @@ public ConnectionRequest fetchAsPropertyList(final OnComplete<Response<List<Prop
* @return Response Object
*/
public Response<List<PropertyBusinessObject>> getAsPropertyList(Class type, String root) {
useBoolean(true);
ConnectionRequest request = createRequest(true);
fetched = true;
CN.addToQueueAndWait(request);
@@ -848,13 +864,19 @@ protected void readUnzipedResponse(InputStream input) throws IOException {
}
if(jsonErrorCallback != null) {
JSONParser jp = new JSONParser();
if(useBoolean != null) {
jp.setUseBoolean(useBoolean);
}
errorObject = jp.parseJSON(new InputStreamReader(input, "UTF-8"));
errorHandler = jsonErrorCallback;
return;
}
if(propertyErrorCallback != null) {
try {
JSONParser jp = new JSONParser();
if(useBoolean != null) {
jp.setUseBoolean(useBoolean);
}
Map m = jp.parseJSON(new InputStreamReader(input, "UTF-8"));
PropertyBusinessObject pb = (PropertyBusinessObject)errorHandlerPropertyType.newInstance();
pb.getPropertyIndex().populateFromMap(m);
@@ -872,6 +894,9 @@ protected void readUnzipedResponse(InputStream input) throws IOException {
}
if(parseJSON) {
JSONParser parser = new JSONParser();
if(useBoolean != null) {
jp.setUseBoolean(useBoolean);
}
json = parser.parseJSON(new InputStreamReader(input, "UTF-8"));
if(hasResponseListeners() && !isKilled()) {
fireResponseListener(new NetworkEvent(this, json));

0 comments on commit 0d2110a

Please sign in to comment.