Skip to content

Commit 8d9514b

Browse files
feat: enhance GlobalField fetch and findAll
1 parent 26e5da7 commit 8d9514b

File tree

4 files changed

+61
-69
lines changed

4 files changed

+61
-69
lines changed

src/main/java/com/contentstack/sdk/GlobalField.java

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -18,15 +18,16 @@ public class GlobalField {
1818
protected static final Logger logger = Logger.getLogger(GlobalField.class.getSimpleName());
1919
protected String globalFieldUid;
2020
protected Stack stackInstance = null;
21-
protected JSONObject params;
21+
protected JSONObject params = new JSONObject();
2222
protected LinkedHashMap<String, Object> headers = null;
2323

24-
protected GlobalField() throws IllegalAccessException {
25-
throw new IllegalAccessException("Can Not Access Private Modifier");
24+
protected GlobalField() {
25+
this.headers = new LinkedHashMap<>();
2626
}
2727

28-
protected GlobalField(String globalFieldUid) {
28+
protected GlobalField(@NotNull String globalFieldUid) {
2929
this.globalFieldUid = globalFieldUid;
30+
this.headers = new LinkedHashMap<>();
3031
}
3132

3233
protected void setStackInstance(Stack stack) {
@@ -72,23 +73,26 @@ public void removeHeader(String headerKey) {
7273
*/
7374

7475
public GlobalField includeBranch() {
75-
params.put("include_branch", false);
76+
this.params.put("include_branch", true);
7677
return this;
7778
}
7879

79-
public void fetch(@NotNull JSONObject params, final GlobalFieldsCallback callback) throws IllegalAccessException {
80+
public GlobalField includeGlobalFieldSchema() {
81+
this.params.put("include_global_field_schema", true);
82+
return this;
83+
}
84+
85+
public void fetch(final GlobalFieldsCallback callback) throws IllegalAccessException {
8086
String urlString = "global_fields/" + globalFieldUid;
81-
Iterator<String> keys = params.keys();
82-
while (keys.hasNext()) {
83-
String key = keys.next();
84-
Object value = params.opt(key);
85-
params.put(key, value);
86-
}
87-
params.put("environment", headers.get("environment"));
8887
if (globalFieldUid == null || globalFieldUid.isEmpty()) {
8988
throw new IllegalAccessException("globalFieldUid is required");
9089
}
91-
fetchGlobalFields(urlString, params, headers, callback);
90+
fetchGlobalFields(urlString, this.params, this.headers, callback);
91+
}
92+
93+
public void findAll(final GlobalFieldsCallback callback) {
94+
String urlString = "global_fields";
95+
fetchGlobalFields(urlString, this.params, this.headers, callback);
9296
}
9397

9498
private void fetchGlobalFields(String urlString, JSONObject params, HashMap<String, Object> headers,
@@ -112,5 +116,4 @@ private HashMap<String, Object> getUrlParams(JSONObject urlQueriesJSON) {
112116
}
113117
return hashMap;
114118
}
115-
116119
}

src/main/java/com/contentstack/sdk/GlobalFieldsModel.java

Lines changed: 22 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@
66
import org.json.JSONArray;
77
import org.json.JSONObject;
88

9-
10-
119
/**
1210
* The GlobalFieldsModel that contains global fields response
1311
*/
@@ -18,37 +16,37 @@ public class GlobalFieldsModel {
1816

1917
public void setJSON(JSONObject responseJSON) {
2018
if (responseJSON != null) {
21-
String ctKey = "global_field";
22-
if (responseJSON.has(ctKey) && responseJSON.opt(ctKey) instanceof LinkedHashMap) {
19+
String gfKey = "global_field";
20+
if (responseJSON.has(gfKey) && responseJSON.opt(gfKey) instanceof LinkedHashMap) {
2321
try {
24-
this.response = new JSONObject((LinkedHashMap<?, ?>) responseJSON.get(ctKey));
22+
this.response = new JSONObject((LinkedHashMap<?, ?>) responseJSON.get(gfKey));
2523
} catch (Exception e) {
2624
System.err.println("Error processing 'global_field': " + e.getMessage());
2725
}
2826
}
2927
String gfListKey = "global_fields";
3028
if (responseJSON.has(gfListKey) && responseJSON.opt(gfListKey) instanceof ArrayList) {
31-
try {
32-
ArrayList<LinkedHashMap<?, ?>> globalFields = (ArrayList) responseJSON.get(gfListKey);
33-
List<Object> objectList = new ArrayList<>();
34-
if (!globalFields.isEmpty()) {
35-
globalFields.forEach(model -> {
36-
if (model instanceof LinkedHashMap) {
37-
// Convert LinkedHashMap to JSONObject
38-
JSONObject jsonModel = new JSONObject((LinkedHashMap<?, ?>) model);
39-
objectList.add(jsonModel);
40-
} else {
41-
System.err.println("Invalid type in 'global_fields' list. Expected LinkedHashMap.");
42-
}
43-
});
29+
try {
30+
ArrayList<LinkedHashMap<?, ?>> globalFields = (ArrayList) responseJSON.get(gfListKey);
31+
List<Object> objectList = new ArrayList<>();
32+
if (!globalFields.isEmpty()) {
33+
globalFields.forEach(model -> {
34+
if (model instanceof LinkedHashMap) {
35+
// Convert LinkedHashMap to JSONObject
36+
JSONObject jsonModel = new JSONObject((LinkedHashMap<?, ?>) model);
37+
objectList.add(jsonModel);
38+
} else {
39+
System.err.println("Invalid type in 'global_fields' list. Expected LinkedHashMap.");
40+
}
41+
});
42+
}
43+
this.response = new JSONArray(objectList);
44+
this.responseJSONArray = new JSONArray(objectList);
45+
} catch (Exception e) {
46+
System.err.println("Error processing 'global_fields': " + e.getMessage());
4447
}
45-
this.response = new JSONArray(objectList);
46-
this.responseJSONArray = new JSONArray(objectList);
47-
} catch (Exception e) {
48-
System.err.println("Error processing 'global_fields': " + e.getMessage());
48+
}
4949
}
50-
}
51-
}
5250
}
5351

5452
public Object getResponse() {

src/main/java/com/contentstack/sdk/Stack.java

Lines changed: 6 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -213,25 +213,19 @@ public ContentType contentType(String contentTypeUid) {
213213
return ct;
214214
}
215215

216-
public GlobalField globalField(String globalFieldUid) {
216+
public GlobalField globalField(@NotNull String globalFieldUid) {
217217
this.globalField = globalFieldUid;
218218
GlobalField gf = new GlobalField(globalFieldUid);
219219
gf.setStackInstance(this);
220220
return gf;
221221
}
222222

223-
public void getGlobalFields(@NotNull JSONObject params, final GlobalFieldsCallback callback) {
224-
Iterator<String> keys = params.keys();
225-
while (keys.hasNext()) {
226-
String key = keys.next();
227-
Object value = params.opt(key);
228-
params.put(key, value);
229-
}
230-
if (this.headers.containsKey(ENVIRONMENT)) {
231-
params.put(ENVIRONMENT, this.headers.get(ENVIRONMENT));
232-
}
233-
fetchGlobalFields("global_fields", params, this.headers, callback);
223+
public GlobalField globalField() {
224+
GlobalField gf = new GlobalField();
225+
gf.setStackInstance(this);
226+
return gf;
234227
}
228+
235229
/**
236230
* Assets refer to all the media files (images, videos, PDFs, audio files, and so on) uploaded in your Contentstack
237231
* repository for future use. These files can be attached and used in multiple entries.
@@ -567,17 +561,6 @@ private void fetchContentTypes(String urlString, JSONObject
567561
}
568562
}
569563

570-
private void fetchGlobalFields(String urlString, JSONObject
571-
globalFieldParam, HashMap<String, Object> headers,
572-
GlobalFieldsCallback callback) {
573-
if (callback != null) {
574-
HashMap<String, Object> queryParam = getUrlParams(globalFieldParam);
575-
String requestInfo = REQUEST_CONTROLLER.GLOBALFIELDS.toString();
576-
new CSBackgroundTask(this, Constants.FETCHGLOBALFIELDS, urlString, headers, queryParam, requestInfo,
577-
callback);
578-
}
579-
}
580-
581564
private void fetchFromNetwork(String urlString, JSONObject urlQueries,
582565
HashMap<String, Object> headers, SyncResultCallBack callback) {
583566
if (callback != null) {

src/test/java/com/contentstack/sdk/TestGlobalFields.java

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,7 @@ void testSetJSONWithEmptyObject() {
3333
@Test
3434
void testFetchGlobalFieldByUid() throws IllegalAccessException {
3535
GlobalField globalField = stack.globalField("specific_gf_uid");
36-
JSONObject paramObj = new JSONObject();
37-
paramObj.put("ctKeyOne", "ctKeyValue1");
38-
paramObj.put("ctKeyTwo", "ctKeyValue2");
39-
globalField.fetch(paramObj, new GlobalFieldsCallback() {
36+
globalField.fetch(new GlobalFieldsCallback() {
4037
@Override
4138
public void onCompletion(GlobalFieldsModel model, Error error) {
4239
JSONArray resp = model.getResultArray();
@@ -46,14 +43,25 @@ public void onCompletion(GlobalFieldsModel model, Error error) {
4643
}
4744

4845
@Test
49-
void testFetchAllGlobalFields() {
50-
JSONObject param = new JSONObject();
51-
stack.getGlobalFields(param, new GlobalFieldsCallback() {
46+
void testFindGlobalFieldsIncludeBranch() {
47+
GlobalField globalField = stack.globalField().includeBranch();
48+
globalField.findAll(new GlobalFieldsCallback() {
5249
@Override
5350
public void onCompletion(GlobalFieldsModel globalFieldsModel, Error error) {
5451
assertTrue(globalFieldsModel.getResultArray() instanceof JSONArray);
5552
assertNotNull(((JSONArray) globalFieldsModel.getResponse()).length());
53+
}
54+
});
55+
}
5656

57+
@Test
58+
void testFindGlobalFields() throws IllegalAccessException {
59+
GlobalField globalField = stack.globalField().includeBranch();
60+
globalField.findAll(new GlobalFieldsCallback() {
61+
@Override
62+
public void onCompletion(GlobalFieldsModel globalFieldsModel, Error error) {
63+
assertTrue(globalFieldsModel.getResultArray() instanceof JSONArray);
64+
assertNotNull(((JSONArray) globalFieldsModel.getResponse()).length());
5765
}
5866
});
5967
}

0 commit comments

Comments
 (0)