11package com .contentstack .utils ;
22
3+ import com .contentstack .utils .callbacks .ContentCallback ;
4+ import com .contentstack .utils .callbacks .MetadataCallback ;
35import com .contentstack .utils .helper .Metadata ;
4- import com .contentstack .utils .render .DefaultOptions ;
5- import com .contentstack .utils .render . Options ;
6+ import com .contentstack .utils .render .DefaultOptionsCallback ;
7+ import com .contentstack .utils .callbacks . OptionsCallback ;
68import org .json .JSONArray ;
79import org .json .JSONObject ;
810import org .jsoup .Jsoup ;
@@ -25,8 +27,7 @@ private interface MetadataCallback { void embeddedObject(Metadata metadata); }
2527 * @param keyPath keyPath
2628 * @param renderObject renderObject
2729 */
28- public static void render (JSONObject entryObj , String [] keyPath , Options renderObject ){
29-
30+ public static void render (JSONObject entryObj , String [] keyPath , OptionsCallback renderObject ){
3031 ContentCallback callback = content -> {
3132 if (content instanceof JSONArray ) {
3233 JSONArray contentArray = (JSONArray ) content ;
@@ -39,12 +40,13 @@ public static void render(JSONObject entryObj, String[] keyPath, Options render
3940 };
4041
4142 if (entryObj !=null && entryObj .has ("_embedded_items" )){
43+ // when keyPath is provided by user
4244 if (keyPath !=null ){
4345 for (String path : keyPath ) {
4446 findContent (entryObj , path , callback );
4547 }
4648 }else {
47- // if keyPath is not available
49+ // if keyPath is not given, extract all available keyPath from _embedded_items
4850 JSONObject embedKeys = entryObj .getJSONObject ("_embedded_items" );
4951 ArrayList <String > pathKeys = new ArrayList <>(embedKeys .keySet ());
5052 for (String path : pathKeys ) {
@@ -66,7 +68,7 @@ private JSONObject findEntryByPath(JSONObject entryObj, String path) {
6668 * @param keyPath String array keyPath
6769 * @param renderObject renderObjects
6870 */
69- public void render (JSONArray jsonArray , String [] keyPath , Options renderObject ){
71+ public void render (JSONArray jsonArray , String [] keyPath , OptionsCallback renderObject ){
7072 jsonArray .forEach (jsonObj -> render ((JSONObject ) jsonObj , keyPath , renderObject ));
7173 }
7274
@@ -92,7 +94,7 @@ public static String renderContent(String rteStringify, JSONObject embedObject,
9294 }
9395 if (filteredContent .isPresent ()) {
9496 JSONObject contentToPass = filteredContent .get ();
95- String stringOption = getStringOption (options , metadata , contentToPass );
97+ String stringOption = getStringOption (optionsCallback , metadata , contentToPass );
9698 sReplaceRTE [0 ] = html .body ().html ().replace (metadata .getOuterHTML (), stringOption );
9799 }
98100 });
@@ -105,14 +107,14 @@ public static String renderContent(String rteStringify, JSONObject embedObject,
105107 * Take below items to return updated string
106108 * @param rteArray JSONArray of the rte available for the embedding
107109 * @param entryObject JSONObject to get the _embedded_object (_embedded_entries/_embedded_assets)
108- * @param options Options take takes input as (StyleType type, JSONObject embeddedObject)
110+ * @param optionsCallback Options take takes input as (StyleType type, JSONObject embeddedObject)
109111 * @return String of rte with replaced tag
110112 */
111- public static JSONArray renderContents (JSONArray rteArray , JSONObject entryObject , Options options ) {
113+ public static JSONArray renderContents (JSONArray rteArray , JSONObject entryObject , OptionsCallback optionsCallback ) {
112114 JSONArray jsonArrayRTEContent = new JSONArray ();
113115 for (Object RTE : rteArray ) {
114116 String stringify = (String ) RTE ;
115- String renderContent = renderContent (stringify , entryObject , options );
117+ String renderContent = renderContent (stringify , entryObject , optionsCallback );
116118 jsonArrayRTEContent .put (renderContent );
117119 }
118120 return jsonArrayRTEContent ;
@@ -156,7 +158,7 @@ private static Optional<JSONObject> findEmbeddedItems(JSONObject jsonObject, Met
156158 return Optional .empty ();
157159 }
158160
159- private static String getStringOption (Options options , Metadata metadata , JSONObject contentToPass ) {
161+ private static String getStringOption (OptionsCallback optionsCallback , Metadata metadata , JSONObject contentToPass ) {
160162 // TODO: Sending HashMap as HTML Attributes
161163 String stringOption = options .renderOptions (
162164 contentToPass , metadata );
@@ -182,7 +184,6 @@ private static void getEmbeddedObjects(Document html, MetadataCallback metadataC
182184 String style = entry .attr ("sys-style-type" );
183185 String outerHTML = entry .outerHtml ();
184186 Metadata metadata = new Metadata (text , type , uid , contentType , style , outerHTML , entry .attributes ());
185- logger .info (metadata .toString ());
186187 metadataCallback .embeddedObject (metadata );
187188 });
188189
0 commit comments