Coverage Report

Created: 2026-11-12 06:28

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/open5gs/lib/sbi/openapi/model/change_item.c
Line
Count
Source
1
2
#include <stdlib.h>
3
#include <string.h>
4
#include <stdio.h>
5
#include "change_item.h"
6
7
OpenAPI_change_item_t *OpenAPI_change_item_create(
8
    OpenAPI_change_type_e op,
9
    char *path,
10
    char *from,
11
    bool is_orig_value_null,
12
    OpenAPI_any_type_t *orig_value,
13
    bool is_new_value_null,
14
    OpenAPI_any_type_t *new_value
15
)
16
611
{
17
611
    OpenAPI_change_item_t *change_item_local_var = ogs_malloc(sizeof(OpenAPI_change_item_t));
18
611
    ogs_assert(change_item_local_var);
19
20
611
    change_item_local_var->op = op;
21
611
    change_item_local_var->path = path;
22
611
    change_item_local_var->from = from;
23
611
    change_item_local_var->is_orig_value_null = is_orig_value_null;
24
611
    change_item_local_var->orig_value = orig_value;
25
611
    change_item_local_var->is_new_value_null = is_new_value_null;
26
611
    change_item_local_var->new_value = new_value;
27
28
611
    return change_item_local_var;
29
611
}
30
31
void OpenAPI_change_item_free(OpenAPI_change_item_t *change_item)
32
611
{
33
611
    OpenAPI_lnode_t *node = NULL;
34
35
611
    if (NULL == change_item) {
36
0
        return;
37
0
    }
38
611
    if (change_item->path) {
39
611
        ogs_free(change_item->path);
40
611
        change_item->path = NULL;
41
611
    }
42
611
    if (change_item->from) {
43
377
        ogs_free(change_item->from);
44
377
        change_item->from = NULL;
45
377
    }
46
611
    if (change_item->orig_value) {
47
201
        OpenAPI_any_type_free(change_item->orig_value);
48
201
        change_item->orig_value = NULL;
49
201
    }
50
611
    if (change_item->new_value) {
51
11
        OpenAPI_any_type_free(change_item->new_value);
52
11
        change_item->new_value = NULL;
53
11
    }
54
611
    ogs_free(change_item);
55
611
}
56
57
cJSON *OpenAPI_change_item_convertToJSON(OpenAPI_change_item_t *change_item)
58
0
{
59
0
    cJSON *item = NULL;
60
0
    OpenAPI_lnode_t *node = NULL;
61
62
0
    if (change_item == NULL) {
63
0
        ogs_error("OpenAPI_change_item_convertToJSON() failed [ChangeItem]");
64
0
        return NULL;
65
0
    }
66
67
0
    item = cJSON_CreateObject();
68
0
    if (change_item->op == OpenAPI_change_type_NULL) {
69
0
        ogs_error("OpenAPI_change_item_convertToJSON() failed [op]");
70
0
        return NULL;
71
0
    }
72
0
    if (cJSON_AddStringToObject(item, "op", OpenAPI_change_type_ToString(change_item->op)) == NULL) {
73
0
        ogs_error("OpenAPI_change_item_convertToJSON() failed [op]");
74
0
        goto end;
75
0
    }
76
77
0
    if (!change_item->path) {
78
0
        ogs_error("OpenAPI_change_item_convertToJSON() failed [path]");
79
0
        return NULL;
80
0
    }
81
0
    if (cJSON_AddStringToObject(item, "path", change_item->path) == NULL) {
82
0
        ogs_error("OpenAPI_change_item_convertToJSON() failed [path]");
83
0
        goto end;
84
0
    }
85
86
0
    if (change_item->from) {
87
0
    if (cJSON_AddStringToObject(item, "from", change_item->from) == NULL) {
88
0
        ogs_error("OpenAPI_change_item_convertToJSON() failed [from]");
89
0
        goto end;
90
0
    }
91
0
    }
92
93
0
    if (change_item->orig_value) {
94
0
    cJSON *orig_value_object = OpenAPI_any_type_convertToJSON(change_item->orig_value);
95
0
    if (orig_value_object == NULL) {
96
0
        ogs_error("OpenAPI_change_item_convertToJSON() failed [orig_value]");
97
0
        goto end;
98
0
    }
99
0
    cJSON_AddItemToObject(item, "origValue", orig_value_object);
100
0
    if (item->child == NULL) {
101
0
        ogs_error("OpenAPI_change_item_convertToJSON() failed [orig_value]");
102
0
        goto end;
103
0
    }
104
0
    } else if (change_item->is_orig_value_null) {
105
0
        if (cJSON_AddNullToObject(item, "origValue") == NULL) {
106
0
            ogs_error("OpenAPI_change_item_convertToJSON() failed [orig_value]");
107
0
            goto end;
108
0
        }
109
0
    }
110
111
0
    if (change_item->new_value) {
112
0
    cJSON *new_value_object = OpenAPI_any_type_convertToJSON(change_item->new_value);
113
0
    if (new_value_object == NULL) {
114
0
        ogs_error("OpenAPI_change_item_convertToJSON() failed [new_value]");
115
0
        goto end;
116
0
    }
117
0
    cJSON_AddItemToObject(item, "newValue", new_value_object);
118
0
    if (item->child == NULL) {
119
0
        ogs_error("OpenAPI_change_item_convertToJSON() failed [new_value]");
120
0
        goto end;
121
0
    }
122
0
    } else if (change_item->is_new_value_null) {
123
0
        if (cJSON_AddNullToObject(item, "newValue") == NULL) {
124
0
            ogs_error("OpenAPI_change_item_convertToJSON() failed [new_value]");
125
0
            goto end;
126
0
        }
127
0
    }
128
129
0
end:
130
0
    return item;
131
0
}
132
133
OpenAPI_change_item_t *OpenAPI_change_item_parseFromJSON(cJSON *change_itemJSON)
134
634
{
135
634
    OpenAPI_change_item_t *change_item_local_var = NULL;
136
634
    OpenAPI_lnode_t *node = NULL;
137
634
    cJSON *op = NULL;
138
634
    OpenAPI_change_type_e opVariable = 0;
139
634
    cJSON *path = NULL;
140
634
    cJSON *from = NULL;
141
634
    cJSON *orig_value = NULL;
142
634
    OpenAPI_any_type_t *orig_value_local_object = NULL;
143
634
    cJSON *new_value = NULL;
144
634
    OpenAPI_any_type_t *new_value_local_object = NULL;
145
634
    op = cJSON_GetObjectItemCaseSensitive(change_itemJSON, "op");
146
634
    if (!op) {
147
7
        ogs_error("OpenAPI_change_item_parseFromJSON() failed [op]");
148
7
        goto end;
149
7
    }
150
627
    if (!cJSON_IsString(op)) {
151
1
        ogs_error("OpenAPI_change_item_parseFromJSON() failed [op]");
152
1
        goto end;
153
1
    }
154
626
    opVariable = OpenAPI_change_type_FromString(op->valuestring);
155
156
626
    path = cJSON_GetObjectItemCaseSensitive(change_itemJSON, "path");
157
626
    if (!path) {
158
13
        ogs_error("OpenAPI_change_item_parseFromJSON() failed [path]");
159
13
        goto end;
160
13
    }
161
613
    if (!cJSON_IsString(path)) {
162
1
        ogs_error("OpenAPI_change_item_parseFromJSON() failed [path]");
163
1
        goto end;
164
1
    }
165
166
612
    from = cJSON_GetObjectItemCaseSensitive(change_itemJSON, "from");
167
612
    if (from) {
168
378
    if (!cJSON_IsString(from) && !cJSON_IsNull(from)) {
169
1
        ogs_error("OpenAPI_change_item_parseFromJSON() failed [from]");
170
1
        goto end;
171
1
    }
172
378
    }
173
174
611
    orig_value = cJSON_GetObjectItemCaseSensitive(change_itemJSON, "origValue");
175
611
    if (orig_value) {
176
201
    if (!cJSON_IsNull(orig_value)) {
177
201
    orig_value_local_object = OpenAPI_any_type_parseFromJSON(orig_value);
178
201
    }
179
201
    }
180
181
611
    new_value = cJSON_GetObjectItemCaseSensitive(change_itemJSON, "newValue");
182
611
    if (new_value) {
183
11
    if (!cJSON_IsNull(new_value)) {
184
11
    new_value_local_object = OpenAPI_any_type_parseFromJSON(new_value);
185
11
    }
186
11
    }
187
188
611
    change_item_local_var = OpenAPI_change_item_create (
189
611
        opVariable,
190
611
        ogs_strdup(path->valuestring),
191
611
        from && !cJSON_IsNull(from) ? ogs_strdup(from->valuestring) : NULL,
192
611
        orig_value && cJSON_IsNull(orig_value) ? true : false,
193
611
        orig_value ? orig_value_local_object : NULL,
194
611
        new_value && cJSON_IsNull(new_value) ? true : false,
195
611
        new_value ? new_value_local_object : NULL
196
611
    );
197
198
611
    return change_item_local_var;
199
23
end:
200
23
    if (orig_value_local_object) {
201
0
        OpenAPI_any_type_free(orig_value_local_object);
202
0
        orig_value_local_object = NULL;
203
0
    }
204
23
    if (new_value_local_object) {
205
0
        OpenAPI_any_type_free(new_value_local_object);
206
0
        new_value_local_object = NULL;
207
0
    }
208
23
    return NULL;
209
612
}
210
211
OpenAPI_change_item_t *OpenAPI_change_item_copy(OpenAPI_change_item_t *dst, OpenAPI_change_item_t *src)
212
0
{
213
0
    cJSON *item = NULL;
214
0
    char *content = NULL;
215
216
0
    ogs_assert(src);
217
0
    item = OpenAPI_change_item_convertToJSON(src);
218
0
    if (!item) {
219
0
        ogs_error("OpenAPI_change_item_convertToJSON() failed");
220
0
        return NULL;
221
0
    }
222
223
0
    content = cJSON_Print(item);
224
0
    cJSON_Delete(item);
225
226
0
    if (!content) {
227
0
        ogs_error("cJSON_Print() failed");
228
0
        return NULL;
229
0
    }
230
231
0
    item = cJSON_Parse(content);
232
0
    ogs_free(content);
233
0
    if (!item) {
234
0
        ogs_error("cJSON_Parse() failed");
235
0
        return NULL;
236
0
    }
237
238
0
    OpenAPI_change_item_free(dst);
239
0
    dst = OpenAPI_change_item_parseFromJSON(item);
240
0
    cJSON_Delete(item);
241
242
0
    return dst;
243
0
}
244