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