Commit a1bb1b7c authored by Hugo Kreber's avatar Hugo Kreber
Browse files

Patches for keyvalueTags and payload

parent 55b6b6fd
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -14,6 +14,7 @@ patch -u ../model/trackable_type.h -i fixHeaderTrackableType.patch
patch -u ../model/unit_system.h -i fixHeaderUnitSystem.patch
patch -u ../model/world_link.h -i fixHeaderWorldLink.patch
patch -u ../api/RelocalizationInformationAPI.c -i fixRelocalizationInformationAPI.patch
patch -u ../model/relocalization_information.c -i fixCRelocInfo.patch
patch -u ../model/unit_system.c -i fixCUnitSystem.patch
patch -u ../model/type_world_storage.c -i fixCTypeWorldStorage.patch
patch -u ../model/type_world_storage.h -i fixHeaderTypeWorldStorage.patch
+46 −0
Original line number Diff line number Diff line
diff --git a/EtsiClientGen/model/relocalization_information.c b/../../world-storage-c-client/EtsiClientGen/model/relocalization_information.c
index 910561e..f527502 100644
--- a/EtsiClientGen/model/relocalization_information.c
+++ b/../../world-storage-c-client/EtsiClientGen/model/relocalization_information.c
@@ -75,11 +75,17 @@ cJSON *relocalization_information_convertToJSON(relocalization_information_t *re
 
     // relocalization_information->request_type
     if(relocalization_information->request_type != world_storage_api_relocalization_information__NULL) {
-    cJSON *request_type_local_JSON = type_world_storage_convertToJSON(relocalization_information->request_type);
+    cJSON *request_type_local_JSON = type_world_storage_type_world_storage_convertToJSON(*relocalization_information->request_type);
     if(request_type_local_JSON == NULL) {
         goto fail; // custom
     }
-    cJSON_AddItemToObject(item, "requestType", request_type_local_JSON);
+    char *type_str = cJSON_GetStringValue(request_type_local_JSON);
+    if (type_str == NULL) {
+        goto fail;
+    }
+    if (cJSON_AddStringToObject(item, "requestType", type_str) == NULL) {
+        goto fail;
+    }
     if(item->child == NULL) {
         goto fail;
     }
@@ -96,7 +102,7 @@ cJSON *relocalization_information_convertToJSON(relocalization_information_t *re
     listEntry_t *reloc_objectsListEntry;
     if (relocalization_information->reloc_objects) {
     list_ForEach(reloc_objectsListEntry, relocalization_information->reloc_objects) {
-    cJSON *itemLocal = relocalization_information_reloc_objects_inner_convertToJSON(reloc_objectsListEntry->data);
+    cJSON *itemLocal = relocalization_information_reloc_objects_inner_convertToJSON((relocalization_information_reloc_objects_inner_t* )reloc_objectsListEntry->data);
     if(itemLocal == NULL) {
     goto fail;
     }
@@ -133,9 +139,11 @@ relocalization_information_t *relocalization_information_parseFromJSON(cJSON *re
     }
 
     // relocalization_information->request_type
+    request_type_local_nonprim = (type_world_storage_t *)malloc(sizeof(type_world_storage_t));
+
     cJSON *request_type = cJSON_GetObjectItemCaseSensitive(relocalization_informationJSON, "requestType");
     if (request_type) { 
-    request_type_local_nonprim = type_world_storage_parseFromJSON(request_type); //custom
+    *request_type_local_nonprim = type_world_storage_type_world_storage_parseFromJSON(request_type); //custom
     }
 
     // relocalization_information->reloc_objects
+107 −57
Original line number Diff line number Diff line
diff --git a/EtsiClientGen/model/trackable.c b/../../world-storage-c-client/EtsiClientGen/model/trackable.c
index 1a27417..f26b4d7 100644
index 1a27417..0270bbc 100644
--- a/EtsiClientGen/model/trackable.c
+++ b/../../world-storage-c-client/EtsiClientGen/model/trackable.c
@@ -3,42 +3,6 @@
@@ -83,23 +83,6 @@ index 1a27417..f26b4d7 100644
 
     // trackable->trackable_encoding_information
     if (!trackable->trackable_encoding_information) {
@@ -188,14 +160,14 @@ cJSON *trackable_convertToJSON(trackable_t *trackable) {
     goto fail;
     }
 
-
+/*
     // trackable->trackable_payload
     if (!trackable->trackable_payload) {
         goto fail;
     }
     if(cJSON_AddStringToObject(item, "trackablePayload", trackable->trackable_payload) == NULL) {
     goto fail; //ByteArray
-    }
+    }*/
 
 
     // trackable->local_crs
@@ -217,14 +189,21 @@ cJSON *trackable_convertToJSON(trackable_t *trackable) {
 
 
@@ -125,7 +108,7 @@ index 1a27417..f26b4d7 100644
     if(item->child == NULL) {
         goto fail;
     }
@@ -243,11 +222,12 @@ cJSON *trackable_convertToJSON(trackable_t *trackable) {
@@ -243,28 +222,31 @@ cJSON *trackable_convertToJSON(trackable_t *trackable) {
     list_ForEach(trackable_sizeListEntry, trackable->trackable_size) {
     if(cJSON_AddNumberToObject(trackable_size, "", *(double *)trackable_sizeListEntry->data) == NULL)
     {
@@ -135,20 +118,44 @@ index 1a27417..f26b4d7 100644
     }
 
-
+    /*
     // trackable->keyvalue_tags
     if (!trackable->keyvalue_tags) {
         goto fail;
@@ -262,7 +242,7 @@ cJSON *trackable_convertToJSON(trackable_t *trackable) {
     list_ForEach(keyvalue_tagsListEntry, trackable->keyvalue_tags) {
         keyValuePair_t *localKeyValue = (keyValuePair_t*)keyvalue_tagsListEntry->data;
     }
-    // trackable->keyvalue_tags
-    if (!trackable->keyvalue_tags) {
-        goto fail;
-    }
+    }*/
 
-    cJSON *keyvalue_tags = cJSON_AddObjectToObject(item, "keyvalueTags");
-    if(keyvalue_tags == NULL) {
-        goto fail; //primitive map container
-    }
-    cJSON *localMapObject = keyvalue_tags;
-    listEntry_t *keyvalue_tagsListEntry;
+ // trackable->keyvalue_tags
     if (trackable->keyvalue_tags) {
-    list_ForEach(keyvalue_tagsListEntry, trackable->keyvalue_tags) {
-        keyValuePair_t *localKeyValue = (keyValuePair_t*)keyvalue_tagsListEntry->data;
-    }
+        cJSON *keyvalue_tags_JSON = cJSON_CreateObject();
+        listEntry_t *listEntry = NULL;
+        list_ForEach(listEntry, trackable->keyvalue_tags) {
+            
+            keyValuePair_t *pair = (keyValuePair_t *)listEntry->data;
+            if (pair && pair->value) {
+                cJSON *values_array = cJSON_CreateArray();
+                listEntry_t *valueEntry = NULL;
+                list_ForEach(valueEntry, (list_t*)pair->value) {
+                    char *value = (char *)valueEntry->data;
+                    cJSON_AddItemToArray(values_array, cJSON_CreateString(value));
+                }
+                cJSON_AddItemToObject(keyvalue_tags_JSON, pair->key, values_array);
+            }
+        }
+        cJSON_AddItemToObject(item, "keyvalueTags", keyvalue_tags_JSON);
     }
 
-
     // trackable->confidence
@@ -305,12 +285,16 @@ trackable_t *trackable_parseFromJSON(cJSON *trackableJSON){
     if(trackable->confidence) {
     if(cJSON_AddNumberToObject(item, "confidence", trackable->confidence) == NULL) {
@@ -305,12 +287,16 @@ trackable_t *trackable_parseFromJSON(cJSON *trackableJSON){
     // trackable->uuid
     cJSON *uuid = cJSON_GetObjectItemCaseSensitive(trackableJSON, "UUID");
     if (uuid) { 
@@ -166,7 +173,7 @@ index 1a27417..f26b4d7 100644
     // trackable->name
     cJSON *name = cJSON_GetObjectItemCaseSensitive(trackableJSON, "name");
     if (!name) {
@@ -322,7 +306,6 @@ trackable_t *trackable_parseFromJSON(cJSON *trackableJSON){
@@ -322,7 +308,6 @@ trackable_t *trackable_parseFromJSON(cJSON *trackableJSON){
     {
     goto end; //String
     }
@@ -174,7 +181,7 @@ index 1a27417..f26b4d7 100644
     // trackable->creator_uuid
     cJSON *creator_uuid = cJSON_GetObjectItemCaseSensitive(trackableJSON, "creatorUUID");
     if (!creator_uuid) {
@@ -334,7 +317,7 @@ trackable_t *trackable_parseFromJSON(cJSON *trackableJSON){
@@ -334,7 +319,7 @@ trackable_t *trackable_parseFromJSON(cJSON *trackableJSON){
     {
     goto end; //String
     }
@@ -183,7 +190,7 @@ index 1a27417..f26b4d7 100644
     // trackable->trackable_type
     cJSON *trackable_type = cJSON_GetObjectItemCaseSensitive(trackableJSON, "trackableType");
     if (!trackable_type) {
@@ -342,35 +325,38 @@ trackable_t *trackable_parseFromJSON(cJSON *trackableJSON){
@@ -342,27 +327,30 @@ trackable_t *trackable_parseFromJSON(cJSON *trackableJSON){
     }
 
     
@@ -201,9 +208,8 @@ index 1a27417..f26b4d7 100644
     trackable_encoding_information_local_nonprim = encoding_information_structure_parseFromJSON(trackable_encoding_information); //nonprimitive
-
     // trackable->trackable_payload
-    cJSON *trackable_payload = cJSON_GetObjectItemCaseSensitive(trackableJSON, "trackablePayload");
     cJSON *trackable_payload = cJSON_GetObjectItemCaseSensitive(trackableJSON, "trackablePayload");
-    if (!trackable_payload) {
+   /* cJSON *trackable_payload = cJSON_GetObjectItemCaseSensitive(trackableJSON, "trackablePayload");
+    
+     if (!trackable_payload) {
         goto end;
@@ -216,12 +222,11 @@ index 1a27417..f26b4d7 100644
     if(!cJSON_IsString(trackable_payload))
     {
     goto end; //ByteArray
-    }
+
     }
 
+    }
+*/
     // trackable->local_crs
     cJSON *local_crs = cJSON_GetObjectItemCaseSensitive(trackableJSON, "localCRS");
@@ -370,7 +358,7 @@ trackable_t *trackable_parseFromJSON(cJSON *trackableJSON){
     if (!local_crs) {
         goto end;
     }
@@ -230,7 +235,7 @@ index 1a27417..f26b4d7 100644
     
     cJSON *local_crs_local = NULL;
     if(!cJSON_IsArray(local_crs)) {
@@ -392,15 +378,15 @@ trackable_t *trackable_parseFromJSON(cJSON *trackableJSON){
@@ -392,15 +380,15 @@ trackable_t *trackable_parseFromJSON(cJSON *trackableJSON){
         *local_crs_local_value = local_crs_local->valuedouble;
         list_addElement(local_crsList , local_crs_local_value);
     }
@@ -248,25 +253,76 @@ index 1a27417..f26b4d7 100644
 
     // trackable->trackable_size
     cJSON *trackable_size = cJSON_GetObjectItemCaseSensitive(trackableJSON, "trackableSize");
@@ -429,7 +415,7 @@ trackable_t *trackable_parseFromJSON(cJSON *trackableJSON){
@@ -429,30 +417,49 @@ trackable_t *trackable_parseFromJSON(cJSON *trackableJSON){
         *trackable_size_local_value = trackable_size_local->valuedouble;
         list_addElement(trackable_sizeList , trackable_size_local_value);
     }
-
+     /*
+     
     // trackable->keyvalue_tags
     cJSON *keyvalue_tags = cJSON_GetObjectItemCaseSensitive(trackableJSON, "keyvalueTags");
     if (!keyvalue_tags) {
@@ -452,7 +438,7 @@ trackable_t *trackable_parseFromJSON(cJSON *trackableJSON){
             list_addElement(keyvalue_tagsList , localMapKeyPair);
-    cJSON *keyvalue_tags = cJSON_GetObjectItemCaseSensitive(trackableJSON, "keyvalueTags");
-    if (!keyvalue_tags) {
-        goto end;
-    }
 
-    
-    cJSON *keyvalue_tags_local_map = NULL;
-    if(!cJSON_IsObject(keyvalue_tags) && !cJSON_IsNull(keyvalue_tags))
-    {
-        goto end;//primitive map container
-    }
-    if(cJSON_IsObject(keyvalue_tags))
-    {
+    cJSON *keyvalue_tags = cJSON_GetObjectItemCaseSensitive(trackableJSON, "keyvalueTags");
+    if (keyvalue_tags) {
+        if (!cJSON_IsObject(keyvalue_tags)) {
+            goto end;
+        }
         keyvalue_tagsList = list_createList();
-        keyValuePair_t *localMapKeyPair;
-        cJSON_ArrayForEach(keyvalue_tags_local_map, keyvalue_tags)
-        {
-            cJSON *localMapObject = keyvalue_tags_local_map;
-            list_addElement(keyvalue_tagsList , localMapKeyPair);
+        if (!keyvalue_tagsList) {
+            goto end;
+        }
+        cJSON *key = NULL;
+        cJSON_ArrayForEach(key, keyvalue_tags) {
+            if (cJSON_IsArray(key)) {
+                list_t *valuesList = list_createList();
+                if (!valuesList) {
+                    goto end;
+                }
+                cJSON *value = NULL;
+                cJSON_ArrayForEach(value, key) {
+                    if (cJSON_IsString(value)) {
+                        char *valueString = strdup(value->valuestring);
+                        if (!valueString) {
+                            goto end;
+                        }
+                        list_addElement(valuesList, valueString);
+                    }
+                }
+                keyValuePair_t *pair = malloc(sizeof(keyValuePair_t));
+                if (!pair) {
+                    goto end;
+                }
+                pair->key = strdup(key->string);
+                if (!pair->key) {
+                    free(pair);
+                    goto end;
+                }
+                pair->value = valuesList;
+                list_addElement(keyvalue_tagsList, pair);
+            }
         }
     }
-
+     */
     // trackable->confidence
     cJSON *confidence = cJSON_GetObjectItemCaseSensitive(trackableJSON, "confidence");
     if (confidence) { 
@@ -462,25 +448,24 @@ trackable_t *trackable_parseFromJSON(cJSON *trackableJSON){
@@ -462,7 +469,6 @@ trackable_t *trackable_parseFromJSON(cJSON *trackableJSON){
     }
     }
 
@@ -274,17 +330,11 @@ index 1a27417..f26b4d7 100644
     trackable_local_var = trackable_create (
         uuid && !cJSON_IsNull(uuid) ? strdup(uuid->valuestring) : NULL,
         strdup(name->valuestring),
         strdup(creator_uuid->valuestring),
         trackable_type_local_nonprim,
         trackable_encoding_information_local_nonprim,
-        strdup(trackable_payload->valuestring),
+        NULL,//strdup(trackable_payload->valuestring),
         local_crsList,
@@ -474,13 +480,13 @@ trackable_t *trackable_parseFromJSON(cJSON *trackableJSON){
         unit_local_nonprim,
         trackable_sizeList,
-        keyvalue_tagsList,
         keyvalue_tagsList,
-        confidence ? confidence->valuedouble : 0
+        NULL,//keyvalue_tagsList,
+        confidence ? confidence->valuedouble : 0.0
         );
 
@@ -296,7 +346,7 @@ index 1a27417..f26b4d7 100644
         trackable_type_local_nonprim = NULL;
     }
     if (trackable_encoding_information_local_nonprim) {
@@ -497,7 +482,7 @@ end:
@@ -497,7 +503,7 @@ end:
         local_crsList = NULL;
     }
     if (unit_local_nonprim) {
+85 −34
Original line number Diff line number Diff line
diff --git a/EtsiClientGen/model/world_anchor.c b/../../world-storage-c-client/EtsiClientGen/model/world_anchor.c
index 5e8a79c..7af4a19 100644
index 5e8a79c..6834828 100644
--- a/EtsiClientGen/model/world_anchor.c
+++ b/../../world-storage-c-client/EtsiClientGen/model/world_anchor.c
@@ -146,16 +146,23 @@ cJSON *world_anchor_convertToJSON(world_anchor_t *world_anchor) {
@@ -28,40 +28,45 @@ index 5e8a79c..7af4a19 100644
     // world_anchor->world_anchor_size
     if (!world_anchor->world_anchor_size) {
         goto fail;
@@ -173,22 +180,24 @@ cJSON *world_anchor_convertToJSON(world_anchor_t *world_anchor) {
@@ -173,21 +180,24 @@ cJSON *world_anchor_convertToJSON(world_anchor_t *world_anchor) {
     }
     }
 
-
     // world_anchor->keyvalue_tags
-    if (!world_anchor->keyvalue_tags) {
+   /* if (!world_anchor->keyvalue_tags) {
         goto fail;
     }
     cJSON *keyvalue_tags = cJSON_AddObjectToObject(item, "keyvalueTags");
-        goto fail;
-    }
-    cJSON *keyvalue_tags = cJSON_AddObjectToObject(item, "keyvalueTags");
-    if(keyvalue_tags == NULL) {
-        goto fail; //primitive map container
+    if (keyvalue_tags == NULL) {
+        goto fail; // primitive map container
     }
-    cJSON *localMapObject = keyvalue_tags;
     listEntry_t *keyvalue_tagsListEntry;
-    if (world_anchor->keyvalue_tags) {
     list_ForEach(keyvalue_tagsListEntry, world_anchor->keyvalue_tags) {
         keyValuePair_t *localKeyValue = (keyValuePair_t*)keyvalue_tagsListEntry->data;
-    }
-    cJSON *localMapObject = keyvalue_tags;
-    listEntry_t *keyvalue_tagsListEntry;
     if (world_anchor->keyvalue_tags) {
-    list_ForEach(keyvalue_tagsListEntry, world_anchor->keyvalue_tags) {
-        keyValuePair_t *localKeyValue = (keyValuePair_t*)keyvalue_tagsListEntry->data;
-    }
+        if (localKeyValue == NULL || localKeyValue->key == NULL || localKeyValue->value == NULL) {
+            goto fail;
+        cJSON *keyvalue_tags_JSON = cJSON_CreateObject();
+        listEntry_t *listEntry = NULL;
+        list_ForEach(listEntry, world_anchor->keyvalue_tags) {
+            
+            keyValuePair_t *pair = (keyValuePair_t *)listEntry->data;
+            if (pair && pair->value) {
+                cJSON *values_array = cJSON_CreateArray();
+                listEntry_t *valueEntry = NULL;
+                list_ForEach(valueEntry, (list_t*)pair->value) {
+                    char *value = (char *)valueEntry->data;
+                    cJSON_AddItemToArray(values_array, cJSON_CreateString(value));
+                }
+                cJSON_AddItemToObject(keyvalue_tags_JSON, pair->key, values_array);
+            }
+        //if (cJSON_AddStringToObject(keyvalue_tags, localKeyValue->key, (char *)localKeyValue->value) == NULL) {
+        //    goto fail; // add key-value pair
+        //}
+    }*/
+        }
+        cJSON_AddItemToObject(item, "keyvalueTags", keyvalue_tags_JSON);
     }
 
     return item;
 fail:
@@ -276,13 +285,14 @@ world_anchor_t *world_anchor_parseFromJSON(cJSON *world_anchorJSON){
@@ -276,13 +286,14 @@ world_anchor_t *world_anchor_parseFromJSON(cJSON *world_anchorJSON){
     }
 
     // world_anchor->unit
@@ -77,31 +82,77 @@ index 5e8a79c..7af4a19 100644
 
     // world_anchor->world_anchor_size
     cJSON *world_anchor_size = cJSON_GetObjectItemCaseSensitive(world_anchorJSON, "worldAnchorSize");
@@ -313,7 +323,7 @@ world_anchor_t *world_anchor_parseFromJSON(cJSON *world_anchorJSON){
     }
@@ -314,28 +325,45 @@ world_anchor_t *world_anchor_parseFromJSON(cJSON *world_anchorJSON){
 
     // world_anchor->keyvalue_tags
-    cJSON *keyvalue_tags = cJSON_GetObjectItemCaseSensitive(world_anchorJSON, "keyvalueTags");
+  /*  cJSON *keyvalue_tags = cJSON_GetObjectItemCaseSensitive(world_anchorJSON, "keyvalueTags");
     if (!keyvalue_tags) {
         goto end;
     }
@@ -334,8 +344,7 @@ world_anchor_t *world_anchor_parseFromJSON(cJSON *world_anchorJSON){
             list_addElement(keyvalue_tagsList , localMapKeyPair);
     cJSON *keyvalue_tags = cJSON_GetObjectItemCaseSensitive(world_anchorJSON, "keyvalueTags");
-    if (!keyvalue_tags) {
-        goto end;
-    }
-
-    
-    cJSON *keyvalue_tags_local_map = NULL;
-    if(!cJSON_IsObject(keyvalue_tags) && !cJSON_IsNull(keyvalue_tags))
-    {
-        goto end;//primitive map container
-    }
-    if(cJSON_IsObject(keyvalue_tags))
-    {
+    if (keyvalue_tags) {
+        if (!cJSON_IsObject(keyvalue_tags)) {
+            goto end;
+        }
         keyvalue_tagsList = list_createList();
-        keyValuePair_t *localMapKeyPair;
-        cJSON_ArrayForEach(keyvalue_tags_local_map, keyvalue_tags)
-        {
-            cJSON *localMapObject = keyvalue_tags_local_map;
-            list_addElement(keyvalue_tagsList , localMapKeyPair);
+        if (!keyvalue_tagsList) {
+            goto end;
+        }
+        cJSON *key = NULL;
+        cJSON_ArrayForEach(key, keyvalue_tags) {
+            if (cJSON_IsArray(key)) {
+                list_t *valuesList = list_createList();
+                if (!valuesList) {
+                    goto end;
+                }
+                cJSON *value = NULL;
+                cJSON_ArrayForEach(value, key) {
+                    if (cJSON_IsString(value)) {
+                        char *valueString = strdup(value->valuestring);
+                        if (!valueString) {
+                            goto end;
+                        }
+                        list_addElement(valuesList, valueString);
+                    }
+                }
+                keyValuePair_t *pair = malloc(sizeof(keyValuePair_t));
+                if (!pair) {
+                    goto end;
+                }
+                pair->key = strdup(key->string);
+                if (!pair->key) {
+                    free(pair);
+                    goto end;
+                }
+                pair->value = valuesList;
+                list_addElement(keyvalue_tagsList, pair);
+            }
         }
     }
-
-
+*/
     world_anchor_local_var = world_anchor_create (
         uuid && !cJSON_IsNull(uuid) ? strdup(uuid->valuestring) : NULL,
         strdup(name->valuestring),
@@ -343,7 +352,7 @@ world_anchor_t *world_anchor_parseFromJSON(cJSON *world_anchorJSON){
@@ -343,7 +371,7 @@ world_anchor_t *world_anchor_parseFromJSON(cJSON *world_anchorJSON){
         local_crsList,
         unit_local_nonprim,
         world_anchor_sizeList,
-        keyvalue_tagsList
+       NULL// keyvalue_tagsList
+       keyvalue_tagsList
         );
 
     return world_anchor_local_var;
+98 −35

File changed.

Preview size limit exceeded, changes collapsed.