Skip to content

Commit 03a8347

Browse files
committed
feat: asset url update method has been added
1 parent 3d2075b commit 03a8347

File tree

4 files changed

+69
-1
lines changed

4 files changed

+69
-1
lines changed

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
# CHANGELOG
22

3+
## v1.14.1
4+
5+
### Date: 17-May-2024
6+
7+
-Enhancement: Update Asset url method added
8+
39
## v1.14.0
410

511
### Date: 13-May-2024

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<modelVersion>4.0.0</modelVersion>
66
<groupId>com.contentstack.sdk</groupId>
77
<artifactId>java</artifactId>
8-
<version>1.14.0</version>
8+
<version>1.14.1</version>
99
<packaging>jar</packaging>
1010
<name>contentstack-java</name>
1111
<description>Java SDK for Contentstack Content Delivery API</description>

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

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import okhttp3.OkHttpClient;
55
import okhttp3.ResponseBody;
66
import org.jetbrains.annotations.NotNull;
7+
import org.json.JSONArray;
78
import org.json.JSONObject;
89
import retrofit2.Response;
910
import retrofit2.Retrofit;
@@ -552,5 +553,49 @@ public enum PublishType {
552553
ENTRY_PUBLISHED,
553554
ENTRY_UNPUBLISHED
554555
}
556+
public void updateAssetUrl(Entry entry) {
557+
JSONObject entryJson = entry.toJSON();
558+
String url = "";
559+
try {
560+
//to find the Latest url present in the embedded field
561+
if (entryJson.has("_embedded_items")) {
562+
JSONObject embeddedItems = entryJson.getJSONObject("_embedded_items");
563+
if (embeddedItems.has("json_rte")) {
564+
JSONArray jrteArray = embeddedItems.getJSONArray("json_rte");
565+
for (int i = 0; i < jrteArray.length(); i++) {
566+
JSONObject jrteObject = jrteArray.getJSONObject(i);
567+
if (jrteObject.has("url")) {
568+
url = jrteObject.getString("url");
569+
}
570+
}
571+
} else {
572+
System.out.println("_embedded_items not found in the entry. Pass entry with includeEmbeddedItems() method!");
573+
}
574+
}
575+
// To update the jsonRTE with latest url
576+
if (entryJson.has("json_rte")) {
577+
JSONObject jsonrte = entryJson.getJSONObject("json_rte");
578+
if (jsonrte.has("children")) {
579+
JSONArray childrenArray = jsonrte.getJSONArray("children");
580+
for (int j = 0; j < childrenArray.length(); j++) {
581+
JSONObject childObject = childrenArray.getJSONObject(j);
582+
if (childObject.has("attrs") && childObject.getString("type").equals("reference")) {
583+
JSONObject attrsObject = childObject.getJSONObject("attrs");
584+
if (attrsObject.has("asset-link")) {
585+
attrsObject.put("asset-link", url);
586+
} else {
587+
System.err.println("Child object of type 'reference' missing 'asset_link' field in attrs.");
588+
}
589+
break;
590+
}
591+
}
592+
} else {
593+
System.err.println("URL field not found in jrteObject.");
594+
}
595+
}
596+
} catch (Exception e) {
597+
System.err.println("Error parsing JSON or updating asset_link: " + e.getMessage());
598+
}
599+
}
555600

556601
}

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

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ class TestStack {
1818
Stack stack = Credentials.getStack();
1919
protected String paginationToken;
2020
private final Logger logger = Logger.getLogger(TestStack.class.getName());
21+
private String entryUid = Credentials.ENTRY_UID;
22+
private String CONTENT_TYPE = Credentials.CONTENT_TYPE;
2123

2224

2325
@Test
@@ -384,5 +386,20 @@ public void onCompletion(SyncStack response, Error error) {
384386
}
385387
});
386388
}
389+
@Test
390+
@Disabled
391+
@Order(43)
392+
void testUpdateAsseturl() throws IllegalAccessException {
393+
Entry entry = stack.contentType(CONTENT_TYPE).entry(entryUid).includeEmbeddedItems();
394+
entry.fetch(new EntryResultCallBack() {
395+
@Override
396+
public void onCompletion(ResponseType responseType, Error error) {
397+
stack.updateAssetUrl(entry);
398+
Assertions.assertEquals(entryUid, entry.getUid());
399+
Assertions.assertTrue(entry.params.has("include_embedded_items[]"));
400+
System.out.println("enrty asset"+ entry.toJSON());
401+
}
402+
});
403+
}
387404

388405
}

0 commit comments

Comments
 (0)