001package Torello.JSON; 002 003import Torello.JavaDoc.Annotations.LinkJavaSource; 004import Torello.JavaDoc.Annotations.StaticFunctional; 005import Torello.JavaDoc.Annotations.JDHeaderBackgroundImg; 006 007import Torello.JavaDoc.Annotations.IntoHTMLTable; 008import static Torello.JavaDoc.Annotations.IntoHTMLTable.Background.GreenDither; 009import static Torello.JavaDoc.Annotations.IntoHTMLTable.Background.BlueDither; 010 011import Torello.Java.Function.IntIntTFunc; 012 013import java.util.stream.Stream; 014import java.util.function.Function; 015 016import javax.json.Json; 017import javax.json.JsonArray; 018import javax.json.JsonString; 019import javax.json.JsonObject; 020 021/** 022 * Utilities for parsing Json Array's and sending the parsed values into a Java Stream. 023 * 024 * <EMBED CLASS='external-html' DATA-FILE-ID=ALL_CLASSES_NOTE> 025 * <EMBED CLASS='external-html' DATA-FILE-ID=RJA_INTO_STRM> 026 * <EMBED CLASS='external-html' DATA-FILE-ID=LOOP_OPTIMIZED_NOTE> 027 * <EMBED CLASS='external-html' DATA-FILE-ID=JO_DESERIALIZE> 028 * <EMBED CLASS='external-html' DATA-FILE-ID=RJ_PT_STRM> 029 * 030 * @see Json 031 * @see JsonArray 032 */ 033@StaticFunctional 034@JDHeaderBackgroundImg(EmbedTagFileID="RJA_JDHBI_STRM") 035public class RJArrIntoStream 036{ 037 private RJArrIntoStream() { } 038 039 040 // ******************************************************************************************** 041 // ******************************************************************************************** 042 // Read Objects Into a Stream 043 // ******************************************************************************************** 044 // ******************************************************************************************** 045 046 047 /** 048 * <EMBED CLASS='external-html' DATA-FILE-ID=RJ_ARR_STREAM_OBJ1_STRM> 049 * @see ProcessJsonArray#objToJava(JsonArray, SettingsRec) 050 * @see #objRec(Object, int, Class) 051 */ 052 @IntoHTMLTable(background=GreenDither, title="Generate a Java Stream of Object <T>") 053 public static <T> Stream<T> objArr( 054 final JsonArray ja, 055 final T defaultValue, 056 final int FLAGS, 057 final Class<T> returnClass 058 ) 059 { return ProcessJsonArray.objToJava(ja, objRec(defaultValue, FLAGS, returnClass)); } 060 061 /** 062 * <EMBED CLASS='external-html' DATA-FILE-ID=RJ_ARR_STREAM_OBJ2_STRM> 063 * @see ProcessJsonArray#objToJava(JsonArray, SettingsRec) 064 * @see #objRec(Object, int, Function, Class) 065 */ 066 @IntoHTMLTable( 067 background=BlueDither, 068 title="Generate a Java Stream of Object <T>, Use User-Provided Static-Builder" 069 ) 070 public static <T> Stream<T> objArr( 071 final JsonArray ja, 072 final T defaultValue, 073 final int FLAGS, 074 final Function<JsonObject, T> objBuilder, 075 final Class<T> returnClass 076 ) 077 { return ProcessJsonArray.objToJava(ja, objRec(defaultValue, FLAGS, objBuilder, returnClass)); } 078 079 /** 080 * <EMBED CLASS='external-html' DATA-FILE-ID=RJ_ARR_STREAM_OBJ3_STRM> 081 * @see ProcessJsonArray#objToJava(JsonArray, SettingsRec) 082 * @see #objRec(Object, int, IntIntTFunc, Class) 083 */ 084 @IntoHTMLTable( 085 background=GreenDither, 086 title="Generate a Java Stream of Object <T>, Use User-Provided Static-Builder" 087 ) 088 public static <T> Stream<T> objArr( 089 final JsonArray ja, 090 final T defaultValue, 091 final int FLAGS, 092 final IntIntTFunc<JsonObject, T> objBuilder, 093 final Class<T> returnClass 094 ) 095 { 096 return ProcessJsonArray.objToJava 097 (ja, objRec(defaultValue, FLAGS, objBuilder, returnClass)); 098 } 099 100 101 // ******************************************************************************************** 102 // ******************************************************************************************** 103 // Generate a SettingsRec instance for reading JsonObjects 104 // ******************************************************************************************** 105 // ******************************************************************************************** 106 107 108 /** <EMBED CLASS='external-html' DATA-FILE-ID=RJ_ARR_STREAM_OBJ1_REC> */ 109 @IntoHTMLTable( 110 background=BlueDither, 111 title="Generate a Java Settings-Record for producing Stream<T>" 112 ) 113 @LinkJavaSource(handle="EXTENDED_TYPES", name="FROM_CTOR") 114 @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="streams") 115 public static <T> SettingsRec<T, Stream<T>> objRec( 116 final T defaultValue, 117 final int FLAGS, 118 final Class<T> returnClass 119 ) 120 { 121 return new SETTINGS_REC_BUILDER<T, Stream<T>> 122 (defaultValue, FLAGS, null, EXTENDED_TYPES.FROM_CTOR(returnClass)) 123 .streams(); 124 } 125 126 /** <EMBED CLASS='external-html' DATA-FILE-ID=RJ_ARR_STREAM_OBJ2_REC> */ 127 @IntoHTMLTable( 128 background=GreenDither, 129 title="Generate a Java Settings-Record for producing Stream<T>" 130 ) 131 @LinkJavaSource(handle="EXTENDED_TYPES", name="ONE_ARG_FUNC") 132 @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="streams") 133 public static <T> SettingsRec<T, Stream<T>> objRec( 134 final T defaultValue, 135 final int FLAGS, 136 final Function<JsonObject, T> objBuilder, 137 final Class<T> returnClass 138 ) 139 { 140 return new SETTINGS_REC_BUILDER<T, Stream<T>> 141 (defaultValue, FLAGS, null, EXTENDED_TYPES.ONE_ARG_FUNC(objBuilder, returnClass)) 142 .streams(); 143 } 144 145 /** <EMBED CLASS='external-html' DATA-FILE-ID=RJ_ARR_STREAM_OBJ3_REC> */ 146 @IntoHTMLTable( 147 background=BlueDither, 148 title="Generate a Java Settings-Record for producing Stream<T>" 149 ) 150 @LinkJavaSource(handle="EXTENDED_TYPES", name="THREE_ARG_FUNC") 151 @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="streams") 152 public static <T> SettingsRec<T, Stream<T>> objRec( 153 final T defaultValue, 154 final int FLAGS, 155 final IntIntTFunc<JsonObject, T> objBuilder, 156 final Class<T> returnClass 157 ) 158 { 159 return new SETTINGS_REC_BUILDER<T, Stream<T>> 160 (defaultValue, FLAGS, null, EXTENDED_TYPES.THREE_ARG_FUNC(objBuilder, returnClass)) 161 .streams(); 162 } 163 164 165 // ******************************************************************************************** 166 // ******************************************************************************************** 167 // Read Strings Into a Stream 168 // ******************************************************************************************** 169 // ******************************************************************************************** 170 171 172 /** 173 * <EMBED CLASS='external-html' DATA-FILE-ID=RJ_ARR_STREAM_STR_STRM> 174 * @see ProcessJsonArray#strToJava(JsonArray, SettingsRec) 175 * @see #strRec(String, int) 176 */ 177 @IntoHTMLTable(background=GreenDither, title="Generate a Java Stream of String's") 178 public static Stream<String> strArr( 179 final JsonArray ja, 180 final String defaultValue, 181 final int FLAGS 182 ) 183 { return ProcessJsonArray.strToJava(ja, strRec(defaultValue, FLAGS)); } 184 185 186 // ******************************************************************************************** 187 // ******************************************************************************************** 188 // Generate a SettingsRec instance for reading Strings 189 // ******************************************************************************************** 190 // ******************************************************************************************** 191 192 193 /** <EMBED CLASS='external-html' DATA-FILE-ID=RJ_ARR_STREAM_STR_REC> */ 194 @IntoHTMLTable( 195 background=BlueDither, 196 title="Generate a Java Settings-Record for producing Stream<String>" 197 ) 198 @LinkJavaSource(handle="BASIC_TYPES", name="STRING_REC") 199 @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="streams") 200 public static SettingsRec<String, Stream<String>> strRec( 201 final String defaultValue, 202 final int FLAGS 203 ) 204 { 205 return new SETTINGS_REC_BUILDER<String, Stream<String>> 206 (defaultValue, FLAGS, null, BASIC_TYPES.STRING_REC()) 207 .streams(); 208 } 209 210 211 // ******************************************************************************************** 212 // ******************************************************************************************** 213 // Read javax.json.JsonObject & JsonArray into a Stream 214 // ******************************************************************************************** 215 // ******************************************************************************************** 216 217 218 /** 219 * <EMBED CLASS='external-html' DATA-FILE-ID=RJ_ARR_STREAM_JO_STRM> 220 * @see ProcessJsonArray#joToJava(JsonArray, SettingsRec) 221 * @see #joRec(JsonObject, int) 222 */ 223 @IntoHTMLTable(background=GreenDither, title="Generate a Java Stream of javax.json.JsonObject") 224 public static Stream<JsonObject> joArr( 225 final JsonArray ja, 226 final JsonObject defaultValue, 227 final int FLAGS 228 ) 229 { return ProcessJsonArray.joToJava(ja, joRec(defaultValue, FLAGS)); } 230 231 /** 232 * <EMBED CLASS='external-html' DATA-FILE-ID=RJ_ARR_STREAM_JA_STRM> 233 * @see ProcessJsonArray#jaToJava(JsonArray, SettingsRec) 234 * @see #jaRec(JsonArray, int) 235 */ 236 @IntoHTMLTable(background=BlueDither, title="Generate a Java Stream of javax.json.JsonArray") 237 public static Stream<JsonArray> jaArr( 238 final JsonArray ja, 239 final JsonArray defaultValue, 240 final int FLAGS 241 ) 242 { return ProcessJsonArray.jaToJava(ja, jaRec(defaultValue, FLAGS)); } 243 244 245 // ******************************************************************************************** 246 // ******************************************************************************************** 247 // Generate a SettingsRec for reading javax.json.JsonObject & JsonArray's into Streams 248 // ******************************************************************************************** 249 // ******************************************************************************************** 250 251 252 /** <EMBED CLASS='external-html' DATA-FILE-ID=RJ_ARR_STREAM_JO_REC> */ 253 @IntoHTMLTable( 254 background=GreenDither, 255 title="Generate a Java Settings-Record for producing Stream<javax.json.JsonObject>" 256 ) 257 @LinkJavaSource(handle="BASIC_TYPES", name="JSON_OBJECT_REC") 258 @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="streams") 259 public static SettingsRec<JsonObject, Stream<JsonObject>> joRec( 260 final JsonObject defaultValue, 261 final int FLAGS 262 ) 263 { 264 return new SETTINGS_REC_BUILDER<JsonObject, Stream<JsonObject>> 265 (defaultValue, FLAGS, null, BASIC_TYPES.JSON_OBJECT_REC()) 266 .streams(); 267 } 268 269 /** <EMBED CLASS='external-html' DATA-FILE-ID=RJ_ARR_STREAM_JA_REC> */ 270 @IntoHTMLTable( 271 background=BlueDither, 272 title="Generate a Java Settings-Record for producing Stream<javax.json.JsonArray>" 273 ) 274 @LinkJavaSource(handle="BASIC_TYPES", name="JSON_ARRAY_REC") 275 @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="streams") 276 public static SettingsRec<JsonArray, Stream<JsonArray>> jaRec( 277 final JsonArray defaultValue, 278 final int FLAGS 279 ) 280 { 281 return new SETTINGS_REC_BUILDER<JsonArray, Stream<JsonArray>> 282 (defaultValue, FLAGS, null, BASIC_TYPES.JSON_ARRAY_REC()) 283 .streams(); 284 } 285 286}