001package Torello.Java.JSON; 002 003 004// *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** 005// These are the User-Provided Lambda's / Functional-Interfaces 006// *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** 007 008import java.util.function.IntConsumer; 009import Torello.Java.Function.TriIntCons; 010import java.util.function.ToIntFunction; 011 012import Torello.Java.Function.ShortConsumer; 013import Torello.Java.Function.IntIntShortCons; 014import Torello.Java.Function.ToShortFunction; 015 016import Torello.Java.Function.ByteConsumer; 017import Torello.Java.Function.IntIntByteCons; 018import Torello.Java.Function.ToByteFunction; 019 020import java.util.function.LongConsumer; 021import Torello.Java.Function.IntIntLongCons; 022import java.util.function.ToLongFunction; 023 024import Torello.Java.Function.FloatConsumer; 025import Torello.Java.Function.IntIntFloatCons; 026import Torello.Java.Function.ToFloatFunction; 027 028import java.util.function.DoubleConsumer; 029import Torello.Java.Function.IntIntDoubleCons; 030import java.util.function.ToDoubleFunction; 031 032import Torello.Java.Function.BoolConsumer; 033import Torello.Java.Function.IntIntBoolCons; 034import java.util.function.Predicate; 035 036 037// *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** 038// The Rest of the imports 039// *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** 040 041import Torello.JavaDoc.StaticFunctional; 042import Torello.JavaDoc.LinkJavaSource; 043import Torello.JavaDoc.JDHeaderBackgroundImg; 044 045import Torello.JavaDoc.IntoHTMLTable; 046import static Torello.JavaDoc.IntoHTMLTable.Background.GreenDither; 047import static Torello.JavaDoc.IntoHTMLTable.Background.BlueDither; 048 049import Torello.Java.JSON.JFlag; 050 051import javax.json.Json; 052import javax.json.JsonString; 053import javax.json.JsonArray; 054import javax.json.JsonValue; 055 056import java.util.Objects; 057 058import static javax.json.JsonValue.TRUE; 059import static javax.json.JsonValue.FALSE; 060 061import static Torello.Java.JSON.JFlag.NOT_ALLOWED_RET_NULL_MASKS; 062import static Torello.Java.JSON.BASIC_TYPES.PRIMITIVE; 063 064 065/** 066 * Utilities for parsing Json Array's and sending the parsed values into a Java 067 * Consumer of Boxed-Primitives. 068 * 069 * <EMBED CLASS='external-html' DATA-FILE-ID=GLASS_FISH_NOTE> 070 * <EMBED CLASS='external-html' DATA-FILE-ID=RJA_INTO_PRIM_CONS> 071 * <EMBED CLASS='external-html' DATA-FILE-ID=JSON_BINDING_NOTE> 072 * 073 * @see Json 074 * @see JsonArray 075 */ 076@StaticFunctional 077@JDHeaderBackgroundImg(EmbedTagFileID="RJA_JDHBI_PRIM_CONS") 078public class RJArrIntoPrimConsumer 079{ 080 private RJArrIntoPrimConsumer() { } 081 082 /** 083 * <EMBED CLASS=defs DATA-METH_NAME=numeric DATA-CONS_TYPE=Int DATA-PRIM_TYPE=int> 084 * <EMBED CLASS='external-html' DATA-TYPE=Integer DATA-FILE-ID=RJ_ARR_INTO_PRIM_CONS> 085 */ 086 @IntoHTMLTable(background=GreenDither, title="Java-Consumer which accepts Primitive-Integers") 087 @LinkJavaSource(handle="BASIC_TYPES", name="INTEGER") 088 @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForConsumers") 089 public static void intArr( 090 final JsonArray ja, 091 final int defaultValue, 092 final int FLAGS, 093 final ToIntFunction<String> optionalUserParser, 094 final IntConsumer c 095 ) 096 { 097 Objects.requireNonNull(c, "IntConsumer parameter 'c' is null"); 098 099 ProcessJsonArray.numericToJava( 100 ja, 101 // new SettingsRec<Integer, Void>( 102 SETTINGS_REC_BUILDER.createForConsumers( 103 defaultValue, 104 FLAGS, 105 (optionalUserParser == null) ? null : optionalUserParser::applyAsInt, 106 c::accept, 107 BASIC_TYPES.PRIMITIVE_INTEGER() 108 )); 109 } 110 111 /** 112 * <EMBED CLASS=defs DATA-METH_NAME=numeric DATA-CONS_TYPE=Short DATA-PRIM_TYPE=short> 113 * <EMBED CLASS='external-html' DATA-TYPE=Short DATA-FILE-ID=RJ_ARR_INTO_PRIM_CONS> 114 */ 115 @IntoHTMLTable(background=BlueDither, 116 title="Java-Consumer which accepts Primitive Short-Integers") 117 @LinkJavaSource(handle="BASIC_TYPES", name="SHORT") 118 @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForConsumers") 119 public static void shortArr( 120 final JsonArray ja, 121 final short defaultValue, 122 final int FLAGS, 123 final ToShortFunction<String> optionalUserParser, 124 final ShortConsumer c 125 ) 126 { 127 Objects.requireNonNull(c, "ShortConsumer parameter 'c' is null"); 128 129 ProcessJsonArray.numericToJava( 130 ja, 131 // new SettingsRec<Short, Void>( 132 SETTINGS_REC_BUILDER.createForConsumers( 133 defaultValue, 134 FLAGS & NOT_ALLOWED_RET_NULL_MASKS, 135 (optionalUserParser == null) ? null : optionalUserParser::applyAsShort, 136 c::accept, 137 BASIC_TYPES.PRIMITIVE_SHORT() 138 )); 139 } 140 141 /** 142 * <EMBED CLASS=defs DATA-METH_NAME=numeric DATA-CONS_TYPE=Byte DATA-PRIM_TYPE=byte> 143 * <EMBED CLASS='external-html' DATA-TYPE=Byte DATA-FILE-ID=RJ_ARR_INTO_PRIM_CONS> 144 */ 145 @IntoHTMLTable(background=GreenDither, title="Java-Consumer which accepts Primitive-Bytes") 146 @LinkJavaSource(handle="BASIC_TYPES", name="BYTE") 147 @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForConsumers") 148 public static void byteArr( 149 final JsonArray ja, 150 final byte defaultValue, 151 final int FLAGS, 152 final ToByteFunction<String> optionalUserParser, 153 final ByteConsumer c 154 ) 155 { 156 Objects.requireNonNull(c, "ByteConsumer parameter 'c' is null"); 157 158 ProcessJsonArray.numericToJava( 159 ja, 160 // new SettingsRec<Byte, Void>( 161 SETTINGS_REC_BUILDER.createForConsumers( 162 defaultValue, 163 FLAGS & NOT_ALLOWED_RET_NULL_MASKS, 164 (optionalUserParser == null) ? null : optionalUserParser::applyAsByte, 165 c::accept, 166 BASIC_TYPES.PRIMITIVE_BYTE() 167 )); 168 } 169 170 /** 171 * <EMBED CLASS=defs DATA-METH_NAME=numeric DATA-CONS_TYPE=Long DATA-PRIM_TYPE=long> 172 * <EMBED CLASS='external-html' DATA-TYPE=Long DATA-FILE-ID=RJ_ARR_INTO_PRIM_CONS> 173 */ 174 @IntoHTMLTable(background=BlueDither, 175 title="Java-Consumer which accepts Primitive Long-Integers") 176 @LinkJavaSource(handle="BASIC_TYPES", name="LONG") 177 @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForConsumers") 178 public static void longArr( 179 final JsonArray ja, 180 final long defaultValue, 181 final int FLAGS, 182 final ToLongFunction<String> optionalUserParser, 183 final LongConsumer c 184 ) 185 { 186 Objects.requireNonNull(c, "LongConsumer parameter 'c' is null"); 187 188 ProcessJsonArray.numericToJava( 189 ja, 190 // new SettingsRec<Long, Void>( 191 SETTINGS_REC_BUILDER.createForConsumers( 192 defaultValue, 193 FLAGS & NOT_ALLOWED_RET_NULL_MASKS, 194 (optionalUserParser == null) ? null : optionalUserParser::applyAsLong, 195 c::accept, 196 BASIC_TYPES.PRIMITIVE_LONG() 197 )); 198 } 199 200 /** 201 * <EMBED CLASS=defs DATA-METH_NAME=numeric DATA-CONS_TYPE=Double DATA-PRIM_TYPE=double> 202 * <EMBED CLASS='external-html' DATA-TYPE=Double DATA-FILE-ID=RJ_ARR_INTO_PRIM_CONS> 203 */ 204 @IntoHTMLTable(background=GreenDither, title="Java-Consumer which accepts Primitive-Doubles") 205 @LinkJavaSource(handle="BASIC_TYPES", name="DOUBLE") 206 @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForConsumers") 207 public static void doubleArr( 208 final JsonArray ja, 209 final double defaultValue, 210 final int FLAGS, 211 final ToDoubleFunction<String> optionalUserParser, 212 final DoubleConsumer c 213 ) 214 { 215 Objects.requireNonNull(c, "DoubleConsumer parameter 'c' is null"); 216 217 ProcessJsonArray.numericToJava( 218 ja, 219 // new SettingsRec<Double, Void>( 220 SETTINGS_REC_BUILDER.createForConsumers( 221 defaultValue, 222 FLAGS & NOT_ALLOWED_RET_NULL_MASKS, 223 (optionalUserParser == null) ? null : optionalUserParser::applyAsDouble, 224 c::accept, 225 BASIC_TYPES.PRIMITIVE_DOUBLE() 226 )); 227 } 228 229 /** 230 * <EMBED CLASS=defs DATA-METH_NAME=numeric DATA-CONS_TYPE=Float DATA-PRIM_TYPE=float> 231 * <EMBED CLASS='external-html' DATA-TYPE=Float DATA-FILE-ID=RJ_ARR_INTO_PRIM_CONS> 232 */ 233 @IntoHTMLTable(background=BlueDither, title="Java-Consumer which accepts Primitive-Floats") 234 @LinkJavaSource(handle="BASIC_TYPES", name="FLOAT") 235 @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForConsumers") 236 public static void floatArr( 237 final JsonArray ja, 238 final float defaultValue, 239 final int FLAGS, 240 final ToFloatFunction<String> optionalUserParser, 241 final FloatConsumer c 242 ) 243 { 244 Objects.requireNonNull(c, "FloatConsumer parameter 'c' is null"); 245 246 ProcessJsonArray.numericToJava( 247 ja, 248 // new SettingsRec<Float, Void>( 249 SETTINGS_REC_BUILDER.createForConsumers( 250 defaultValue, 251 FLAGS & NOT_ALLOWED_RET_NULL_MASKS, 252 (optionalUserParser == null) ? null : optionalUserParser::applyAsFloat, 253 c::accept, 254 BASIC_TYPES.PRIMITIVE_FLOAT() 255 )); 256 } 257 258 /** 259 * <EMBED CLASS=defs DATA-METH_NAME=boolean DATA-CONS_TYPE=Bool DATA-PRIM_TYPE=boolean> 260 * <EMBED CLASS='external-html' DATA-TYPE=Boolean DATA-FILE-ID=RJ_ARR_INTO_PRIM_CONS> 261 */ 262 @IntoHTMLTable(background=GreenDither, title="Java-Consumer which accepts Primitive-Booleans") 263 @LinkJavaSource(handle="BASIC_TYPES", name="BOOLEAN") 264 @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForConsumers") 265 public static void booleanArr( 266 final JsonArray ja, 267 final boolean defaultValue, 268 final int FLAGS, 269 final Predicate<String> optionalUserParser, 270 final BoolConsumer c 271 ) 272 { 273 Objects.requireNonNull(c, "BoolConsumer parameter 'c' is null"); 274 275 ProcessJsonArray.booleanToJava( 276 ja, 277 // new SettingsRec<Boolean, Void>( 278 SETTINGS_REC_BUILDER.createForConsumers( 279 defaultValue, 280 FLAGS & NOT_ALLOWED_RET_NULL_MASKS, 281 (optionalUserParser == null) ? null : optionalUserParser::test, 282 c::accept, 283 BASIC_TYPES.PRIMITIVE_BOOLEAN() 284 )); 285 } 286 287 288 289 290 // ******************************************************************************************** 291 // ******************************************************************************************** 292 // IntInt (w/ Array-Indices) Primitive-Consumer Variant 293 // ******************************************************************************************** 294 // ******************************************************************************************** 295 296 297 298 299 /** <EMBED CLASS='external-html' DATA-TYPE=Integer DATA-FILE-ID=RJ_ARR_INTO_PRIM_TRIINT> */ 300 @IntoHTMLTable( 301 background=BlueDither, 302 title="Java-Consumer which accepts Primitive-Integers & Array-Indices" 303 ) 304 @LinkJavaSource(handle="BASIC_TYPES", name="INTEGER") 305 @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForIIConsumers") 306 public static void intArr2( 307 final JsonArray ja, 308 final int defaultValue, 309 final int FLAGS, 310 final ToIntFunction<String> optionalUserParser, 311 final TriIntCons c 312 ) 313 { 314 Objects.requireNonNull(c, "TriIntCons parameter 'c' is null"); 315 316 ProcessJsonArray.numericToJava( 317 ja, 318 // new SettingsRec<Integer, Void>( 319 SETTINGS_REC_BUILDER.createForIIConsumers( 320 defaultValue, 321 FLAGS, 322 (optionalUserParser == null) ? null : optionalUserParser::applyAsInt, 323 c::accept, 324 BASIC_TYPES.PRIMITIVE_INTEGER() 325 )); 326 } 327 328 /** 329 * <EMBED CLASS=defs DATA-METH_NAME=numeric DATA-CONS_TYPE=Short DATA-PRIM_TYPE=short> 330 * <EMBED CLASS='external-html' DATA-TYPE=Short DATA-FILE-ID=RJ_ARR_INTO_PRIM_CONS2> 331 */ 332 @IntoHTMLTable( 333 background=GreenDither, 334 title="Java-Consumer which accepts Primitive Short-Integers & Array-Indices" 335 ) 336 @LinkJavaSource(handle="BASIC_TYPES", name="SHORT") 337 @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForIIConsumers") 338 public static void shortArr2( 339 final JsonArray ja, 340 final short defaultValue, 341 final int FLAGS, 342 final ToShortFunction<String> optionalUserParser, 343 final IntIntShortCons c 344 ) 345 { 346 Objects.requireNonNull(c, "IntIntShortCons parameter 'c' is null"); 347 348 ProcessJsonArray.numericToJava( 349 ja, 350 // new SettingsRec<Short, Void>( 351 SETTINGS_REC_BUILDER.createForIIConsumers( 352 defaultValue, 353 FLAGS & NOT_ALLOWED_RET_NULL_MASKS, 354 (optionalUserParser == null) ? null : optionalUserParser::applyAsShort, 355 c::accept, 356 BASIC_TYPES.PRIMITIVE_SHORT() 357 )); 358 } 359 360 /** 361 * <EMBED CLASS=defs DATA-METH_NAME=numeric DATA-CONS_TYPE=Byte DATA-PRIM_TYPE=byte> 362 * <EMBED CLASS='external-html' DATA-TYPE=Byte DATA-FILE-ID=RJ_ARR_INTO_PRIM_CONS2> 363 */ 364 @IntoHTMLTable( 365 background=BlueDither, 366 title="Java-Consumer which accepts Primitive-Bytes & Array-Indices" 367 ) 368 @LinkJavaSource(handle="BASIC_TYPES", name="BYTE") 369 @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForIIConsumers") 370 public static void byteArr2( 371 final JsonArray ja, 372 final byte defaultValue, 373 final int FLAGS, 374 final ToByteFunction<String> optionalUserParser, 375 final IntIntByteCons c 376 ) 377 { 378 Objects.requireNonNull(c, "IntIntByteCons parameter 'c' is null"); 379 380 ProcessJsonArray.numericToJava( 381 ja, 382 // new SettingsRec<Byte, Void>( 383 SETTINGS_REC_BUILDER.createForIIConsumers( 384 defaultValue, 385 FLAGS & NOT_ALLOWED_RET_NULL_MASKS, 386 (optionalUserParser == null) ? null : optionalUserParser::applyAsByte, 387 c::accept, 388 BASIC_TYPES.PRIMITIVE_BYTE() 389 )); 390 } 391 392 /** 393 * <EMBED CLASS=defs DATA-METH_NAME=numeric DATA-CONS_TYPE=Long DATA-PRIM_TYPE=long> 394 * <EMBED CLASS='external-html' DATA-TYPE=Long DATA-FILE-ID=RJ_ARR_INTO_PRIM_CONS2> 395 */ 396 @IntoHTMLTable( 397 background=GreenDither, 398 title="Java-Consumer which accepts Primitive Long-Integers & Array-Indices" 399 ) 400 @LinkJavaSource(handle="BASIC_TYPES", name="LONG") 401 @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForIIConsumers") 402 public static void longArr2( 403 final JsonArray ja, 404 final long defaultValue, 405 final int FLAGS, 406 final ToLongFunction<String> optionalUserParser, 407 final IntIntLongCons c 408 ) 409 { 410 Objects.requireNonNull(c, "IntIntLongCons parameter 'c' is null"); 411 412 ProcessJsonArray.numericToJava( 413 ja, 414 // new SettingsRec<Long, Void>( 415 SETTINGS_REC_BUILDER.createForIIConsumers( 416 defaultValue, 417 FLAGS & NOT_ALLOWED_RET_NULL_MASKS, 418 (optionalUserParser == null) ? null : optionalUserParser::applyAsLong, 419 c::accept, 420 BASIC_TYPES.PRIMITIVE_LONG() 421 )); 422 } 423 424 /** 425 * <EMBED CLASS=defs DATA-METH_NAME=numeric DATA-CONS_TYPE=Double DATA-PRIM_TYPE=double> 426 * <EMBED CLASS='external-html' DATA-TYPE=Double DATA-FILE-ID=RJ_ARR_INTO_PRIM_CONS2> 427 */ 428 @IntoHTMLTable( 429 background=BlueDither, 430 title="Java-Consumer which accepts Primitive-Doubles & Array-Indices" 431 ) 432 @LinkJavaSource(handle="BASIC_TYPES", name="DOUBLE") 433 @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForIIConsumers") 434 public static void doubleArr2( 435 final JsonArray ja, 436 final double defaultValue, 437 final int FLAGS, 438 final ToDoubleFunction<String> optionalUserParser, 439 final IntIntDoubleCons c 440 ) 441 { 442 Objects.requireNonNull(c, "IntIntDoubleCons parameter 'c' is null"); 443 444 ProcessJsonArray.numericToJava( 445 ja, 446 // new SettingsRec<Double, Void>( 447 SETTINGS_REC_BUILDER.createForIIConsumers( 448 defaultValue, 449 FLAGS & NOT_ALLOWED_RET_NULL_MASKS, 450 (optionalUserParser == null) ? null : optionalUserParser::applyAsDouble, 451 c::accept, 452 BASIC_TYPES.PRIMITIVE_DOUBLE() 453 )); 454 } 455 456 /** 457 * <EMBED CLASS=defs DATA-METH_NAME=numeric DATA-CONS_TYPE=Float DATA-PRIM_TYPE=float> 458 * <EMBED CLASS='external-html' DATA-TYPE=Float DATA-FILE-ID=RJ_ARR_INTO_PRIM_CONS2> 459 */ 460 @IntoHTMLTable( 461 background=GreenDither, 462 title="Java-Consumer which accepts Primitive-Floats & Array-Indices" 463 ) 464 @LinkJavaSource(handle="BASIC_TYPES", name="FLOAT") 465 @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForIIConsumers") 466 public static void floatArr2( 467 final JsonArray ja, 468 final float defaultValue, 469 final int FLAGS, 470 final ToFloatFunction<String> optionalUserParser, 471 final IntIntFloatCons c 472 ) 473 { 474 Objects.requireNonNull(c, "IntIntFloatCons parameter 'c' is null"); 475 476 ProcessJsonArray.numericToJava( 477 ja, 478 // new SettingsRec<Float, Void>( 479 SETTINGS_REC_BUILDER.createForIIConsumers( 480 defaultValue, 481 FLAGS & NOT_ALLOWED_RET_NULL_MASKS, 482 (optionalUserParser == null) ? null : optionalUserParser::applyAsFloat, 483 c::accept, 484 BASIC_TYPES.PRIMITIVE_FLOAT() 485 )); 486 } 487 488 /** 489 * <EMBED CLASS=defs DATA-METH_NAME=boolean DATA-CONS_TYPE=Bool DATA-PRIM_TYPE=boolean> 490 * <EMBED CLASS='external-html' DATA-TYPE=Boolean DATA-FILE-ID=RJ_ARR_INTO_PRIM_CONS2> 491 */ 492 @IntoHTMLTable( 493 background=BlueDither, 494 title="Java-Consumer which accepts Primitive-Booleans & Array-Indices" 495 ) 496 @LinkJavaSource(handle="BASIC_TYPES", name="BOOLEAN") 497 @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForIIConsumers") 498 public static void booleanArr2( 499 final JsonArray ja, 500 final boolean defaultValue, 501 final int FLAGS, 502 final Predicate<String> optionalUserParser, 503 final IntIntBoolCons c 504 ) 505 { 506 Objects.requireNonNull(c, "IntIntBoolCons parameter 'c' is null"); 507 508 ProcessJsonArray.booleanToJava( 509 ja, 510 // new SettingsRec<Boolean, Void>( 511 SETTINGS_REC_BUILDER.createForIIConsumers( 512 defaultValue, 513 FLAGS & NOT_ALLOWED_RET_NULL_MASKS, 514 (optionalUserParser == null) ? null : optionalUserParser::test, 515 c::accept, 516 BASIC_TYPES.PRIMITIVE_BOOLEAN() 517 )); 518 } 519 520 521}