001package Torello.Java.JSON; 002 003import Torello.JavaDoc.LinkJavaSource; 004import Torello.JavaDoc.StaticFunctional; 005import Torello.JavaDoc.JDHeaderBackgroundImg; 006 007import Torello.JavaDoc.IntoHTMLTable; 008import static Torello.JavaDoc.IntoHTMLTable.Background.GreenDither; 009import static Torello.JavaDoc.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=GLASS_FISH_NOTE> 025 * <EMBED CLASS='external-html' DATA-FILE-ID=RJA_INTO_STRM> 026 * <EMBED CLASS='external-html' DATA-FILE-ID=JSON_BINDING_NOTE> 027 * <EMBED CLASS='external-html' DATA-FILE-ID=LOOP_OPTIMIZED_NOTE> 028 * 029 * @see Json 030 * @see JsonArray 031 */ 032@StaticFunctional 033@JDHeaderBackgroundImg(EmbedTagFileID="RJA_JDHBI_STRM") 034public class RJArrIntoStream 035{ 036 private RJArrIntoStream() { } 037 038 039 // ******************************************************************************************** 040 // ******************************************************************************************** 041 // Read Objects Into a Stream 042 // ******************************************************************************************** 043 // ******************************************************************************************** 044 045 046 /** <EMBED CLASS='external-html' DATA-FILE-ID=RJ_ARR_STREAM_OBJ1_STRM> */ 047 @IntoHTMLTable(background=GreenDither, title="Generate a Java Stream of Object <T>") 048 @LinkJavaSource(handle="BASIC_TYPES", name="OBJECT", paramCount=1) 049 @LinkJavaSource(handle="STREAM_BUILDER", name="normalStream") 050 @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForStreams") 051 public static <T> Stream<T> objArr( 052 final JsonArray ja, 053 final T defaultValue, 054 final int FLAGS, 055 final Class<T> returnClass 056 ) 057 { 058 return ProcessJsonArray.objToJava( 059 ja, 060 SETTINGS_REC_BUILDER.createForStreams( 061 defaultValue, 062 FLAGS, 063 null, 064 BASIC_TYPES.OBJECT(returnClass), 065 STREAM_BUILDER.normalStream() 066 )); 067 } 068 069 /** <EMBED CLASS='external-html' DATA-FILE-ID=RJ_ARR_STREAM_OBJ2_STRM> */ 070 @IntoHTMLTable(background=BlueDither, 071 title="Generate a Java Stream of Object <T>, Use User-Provided Static-Builder") 072 @LinkJavaSource(handle="BASIC_TYPES", name="OBJECT", paramCount=2) 073 @LinkJavaSource(handle="STREAM_BUILDER", name="normalStream") 074 @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForStreams") 075 public static <T> Stream<T> objArr( 076 final JsonArray ja, 077 final T defaultValue, 078 final int FLAGS, 079 final Function<JsonObject, T> objBuilder, 080 final Class<T> returnClass 081 ) 082 { 083 return ProcessJsonArray.objToJava( 084 ja, 085 SETTINGS_REC_BUILDER.createForStreams( 086 defaultValue, 087 FLAGS, 088 null, 089 BASIC_TYPES.OBJECT(objBuilder, returnClass), 090 STREAM_BUILDER.normalStream() 091 )); 092 } 093 094 /** <EMBED CLASS='external-html' DATA-FILE-ID=RJ_ARR_STREAM_OBJ3_STRM> */ 095 @IntoHTMLTable(background=GreenDither, 096 title="Generate a Java Stream of Object <T>, Use User-Provided Static-Builder") 097 @LinkJavaSource(handle="BASIC_TYPES", name="OBJECT2", paramCount=2) 098 @LinkJavaSource(handle="STREAM_BUILDER", name="normalStream") 099 @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForStreams") 100 public static <T> Stream<T> objArr( 101 final JsonArray ja, 102 final T defaultValue, 103 final int FLAGS, 104 final IntIntTFunc<JsonObject, T> objBuilder, 105 final Class<T> returnClass 106 ) 107 { 108 return ProcessJsonArray.objToJava( 109 ja, 110 SETTINGS_REC_BUILDER.createForStreams( 111 defaultValue, 112 FLAGS, 113 null, 114 BASIC_TYPES.OBJECT2(objBuilder, returnClass), 115 STREAM_BUILDER.normalStream() 116 )); 117 } 118 119 120 // ******************************************************************************************** 121 // ******************************************************************************************** 122 // Read Strings Into a Stream 123 // ******************************************************************************************** 124 // ******************************************************************************************** 125 126 127 /** <EMBED CLASS='external-html' DATA-FILE-ID=RJ_ARR_STREAM_STR_STRM> */ 128 @IntoHTMLTable(background=BlueDither, title="Generate a Java Stream of String's") 129 @LinkJavaSource(handle="BASIC_TYPES", name="STRING_REC") 130 @LinkJavaSource(handle="STREAM_BUILDER", name="normalStream") 131 @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForStreams") 132 public static Stream<String> strArr( 133 final JsonArray ja, 134 final String defaultValue, 135 final int FLAGS 136 ) 137 { 138 return ProcessJsonArray.strToJava( 139 ja, 140 SETTINGS_REC_BUILDER.createForStreams( 141 defaultValue, 142 FLAGS, 143 null, // optionalUserParser 144 BASIC_TYPES.STRING_REC(), 145 STREAM_BUILDER.normalStream() 146 )); 147 } 148 149 150 // ******************************************************************************************** 151 // ******************************************************************************************** 152 // Generate a SettingsRec instance for reading JsonObjects 153 // ******************************************************************************************** 154 // ******************************************************************************************** 155 156 157 /** <EMBED CLASS='external-html' DATA-FILE-ID=RJ_ARR_STREAM_OBJ1_REC> */ 158 @IntoHTMLTable(background=GreenDither, 159 title="Generate a Java Settings-Record for producing Stream<T>") 160 @LinkJavaSource(handle="BASIC_TYPES", name="OBJECT", paramCount=1) 161 @LinkJavaSource(handle="STREAM_BUILDER", name="normalStream") 162 @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForStreams") 163 public static <T> SettingsRec<T, Stream<T>> objRec( 164 final T defaultValue, 165 final int FLAGS, 166 final Class<T> returnClass 167 ) 168 { 169 return SETTINGS_REC_BUILDER.createForStreams( 170 defaultValue, 171 FLAGS, 172 null, 173 BASIC_TYPES.OBJECT(returnClass), 174 STREAM_BUILDER.normalStream() 175 ); 176 } 177 178 /** <EMBED CLASS='external-html' DATA-FILE-ID=RJ_ARR_STREAM_OBJ2_REC> */ 179 @IntoHTMLTable(background=BlueDither, 180 title="Generate a Java Settings-Record for producing Stream<T>") 181 @LinkJavaSource(handle="BASIC_TYPES", name="OBJECT", paramCount=2) 182 @LinkJavaSource(handle="STREAM_BUILDER", name="normalStream") 183 @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForStreams") 184 public static <T> SettingsRec<T, Stream<T>> objRec( 185 final T defaultValue, 186 final int FLAGS, 187 final Function<JsonObject, T> objBuilder, 188 final Class<T> returnClass 189 ) 190 { 191 return SETTINGS_REC_BUILDER.createForStreams( 192 defaultValue, 193 FLAGS, 194 null, 195 BASIC_TYPES.OBJECT(objBuilder, returnClass), 196 STREAM_BUILDER.normalStream() 197 ); 198 } 199 200 /** <EMBED CLASS='external-html' DATA-FILE-ID=RJ_ARR_STREAM_OBJ3_REC> */ 201 @IntoHTMLTable(background=GreenDither, 202 title="Generate a Java Settings-Record for producing Stream<T>") 203 @LinkJavaSource(handle="BASIC_TYPES", name="OBJECT2", paramCount=2) 204 @LinkJavaSource(handle="STREAM_BUILDER", name="normalStream") 205 @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForStreams") 206 public static <T> SettingsRec<T, Stream<T>> objRec( 207 final T defaultValue, 208 final int FLAGS, 209 final IntIntTFunc<JsonObject, T> objBuilder, 210 final Class<T> returnClass 211 ) 212 { 213 return SETTINGS_REC_BUILDER.createForStreams( 214 defaultValue, 215 FLAGS, 216 null, 217 BASIC_TYPES.OBJECT2(objBuilder, returnClass), 218 STREAM_BUILDER.normalStream() 219 ); 220 } 221 222 223 // ******************************************************************************************** 224 // ******************************************************************************************** 225 // Generate a SettingsRec instance for reading Strings 226 // ******************************************************************************************** 227 // ******************************************************************************************** 228 229 230 /** <EMBED CLASS='external-html' DATA-FILE-ID=RJ_ARR_STREAM_STR_REC> */ 231 @IntoHTMLTable(background=BlueDither, 232 title="Generate a Java Settings-Record for producing Stream<String>") 233 @LinkJavaSource(handle="BASIC_TYPES", name="STRING_REC") 234 @LinkJavaSource(handle="STREAM_BUILDER", name="normalStream") 235 @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForStreams") 236 public static SettingsRec<String, Stream<String>> strRec( 237 final String defaultValue, 238 final int FLAGS 239 ) 240 { 241 return SETTINGS_REC_BUILDER.createForStreams( 242 defaultValue, 243 FLAGS, 244 null, // optionalUserParser 245 BASIC_TYPES.STRING_REC(), 246 STREAM_BUILDER.normalStream() 247 ); 248 } 249}