001package Torello.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.Annotations.StaticFunctional; 042import Torello.JavaDoc.Annotations.LinkJavaSource; 043import Torello.JavaDoc.Annotations.JDHeaderBackgroundImg; 044 045import Torello.JavaDoc.Annotations.IntoHTMLTable; 046import static Torello.JavaDoc.Annotations.IntoHTMLTable.Background.GreenDither; 047import static Torello.JavaDoc.Annotations.IntoHTMLTable.Background.BlueDither; 048 049import Torello.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.JSON.JFlag.NOT_ALLOWED_RET_NULL_MASKS; 062import static Torello.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=ALL_CLASSES_NOTE> 070 * <EMBED CLASS='external-html' DATA-FILE-ID=RJA_INTO_PRIM_CONS> 071 * <EMBED CLASS='external-html' DATA-FILE-ID=RJ_PT_PRIM_CONS> 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="oneArgConsumer") 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 SETTINGS_REC_BUILDER<Integer, Void>( 102 defaultValue, 103 FLAGS, 104 (optionalUserParser == null) ? null : optionalUserParser::applyAsInt, 105 BASIC_TYPES.PRIMITIVE_INTEGER() 106 ) 107 .oneArgConsumer(c::accept) 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( 116 background=BlueDither, 117 title="Java-Consumer which accepts Primitive Short-Integers" 118 ) 119 @LinkJavaSource(handle="BASIC_TYPES", name="SHORT") 120 @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="oneArgConsumer") 121 public static void shortArr( 122 final JsonArray ja, 123 final short defaultValue, 124 final int FLAGS, 125 final ToShortFunction<String> optionalUserParser, 126 final ShortConsumer c 127 ) 128 { 129 Objects.requireNonNull(c, "ShortConsumer parameter 'c' is null"); 130 131 ProcessJsonArray.numericToJava( 132 ja, 133 new SETTINGS_REC_BUILDER<Short, Void>( 134 defaultValue, 135 FLAGS & NOT_ALLOWED_RET_NULL_MASKS, 136 (optionalUserParser == null) ? null : optionalUserParser::applyAsShort, 137 BASIC_TYPES.PRIMITIVE_SHORT() 138 ) 139 .oneArgConsumer(c::accept) 140 ); 141 } 142 143 /** 144 * <EMBED CLASS=defs DATA-METH_NAME=numeric DATA-CONS_TYPE=Byte DATA-PRIM_TYPE=byte> 145 * <EMBED CLASS='external-html' DATA-TYPE=Byte DATA-FILE-ID=RJ_ARR_INTO_PRIM_CONS> 146 */ 147 @IntoHTMLTable(background=GreenDither, title="Java-Consumer which accepts Primitive-Bytes") 148 @LinkJavaSource(handle="BASIC_TYPES", name="BYTE") 149 @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="oneArgConsumer") 150 public static void byteArr( 151 final JsonArray ja, 152 final byte defaultValue, 153 final int FLAGS, 154 final ToByteFunction<String> optionalUserParser, 155 final ByteConsumer c 156 ) 157 { 158 Objects.requireNonNull(c, "ByteConsumer parameter 'c' is null"); 159 160 ProcessJsonArray.numericToJava( 161 ja, 162 new SETTINGS_REC_BUILDER<Byte, Void>( 163 defaultValue, 164 FLAGS & NOT_ALLOWED_RET_NULL_MASKS, 165 (optionalUserParser == null) ? null : optionalUserParser::applyAsByte, 166 BASIC_TYPES.PRIMITIVE_BYTE() 167 ) 168 .oneArgConsumer(c::accept) 169 ); 170 } 171 172 /** 173 * <EMBED CLASS=defs DATA-METH_NAME=numeric DATA-CONS_TYPE=Long DATA-PRIM_TYPE=long> 174 * <EMBED CLASS='external-html' DATA-TYPE=Long DATA-FILE-ID=RJ_ARR_INTO_PRIM_CONS> 175 */ 176 @IntoHTMLTable( 177 background=BlueDither, 178 title="Java-Consumer which accepts Primitive Long-Integers" 179 ) 180 @LinkJavaSource(handle="BASIC_TYPES", name="LONG") 181 @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="oneArgConsumer") 182 public static void longArr( 183 final JsonArray ja, 184 final long defaultValue, 185 final int FLAGS, 186 final ToLongFunction<String> optionalUserParser, 187 final LongConsumer c 188 ) 189 { 190 Objects.requireNonNull(c, "LongConsumer parameter 'c' is null"); 191 192 ProcessJsonArray.numericToJava( 193 ja, 194 new SETTINGS_REC_BUILDER<Long, Void>( 195 defaultValue, 196 FLAGS & NOT_ALLOWED_RET_NULL_MASKS, 197 (optionalUserParser == null) ? null : optionalUserParser::applyAsLong, 198 BASIC_TYPES.PRIMITIVE_LONG() 199 ) 200 .oneArgConsumer(c::accept) 201 ); 202 } 203 204 /** 205 * <EMBED CLASS=defs DATA-METH_NAME=numeric DATA-CONS_TYPE=Double DATA-PRIM_TYPE=double> 206 * <EMBED CLASS='external-html' DATA-TYPE=Double DATA-FILE-ID=RJ_ARR_INTO_PRIM_CONS> 207 */ 208 @IntoHTMLTable(background=GreenDither, title="Java-Consumer which accepts Primitive-Doubles") 209 @LinkJavaSource(handle="BASIC_TYPES", name="DOUBLE") 210 @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="oneArgConsumer") 211 public static void doubleArr( 212 final JsonArray ja, 213 final double defaultValue, 214 final int FLAGS, 215 final ToDoubleFunction<String> optionalUserParser, 216 final DoubleConsumer c 217 ) 218 { 219 Objects.requireNonNull(c, "DoubleConsumer parameter 'c' is null"); 220 221 ProcessJsonArray.numericToJava( 222 ja, 223 new SETTINGS_REC_BUILDER<Double, Void>( 224 defaultValue, 225 FLAGS & NOT_ALLOWED_RET_NULL_MASKS, 226 (optionalUserParser == null) ? null : optionalUserParser::applyAsDouble, 227 BASIC_TYPES.PRIMITIVE_DOUBLE() 228 ) 229 .oneArgConsumer(c::accept) 230 ); 231 } 232 233 /** 234 * <EMBED CLASS=defs DATA-METH_NAME=numeric DATA-CONS_TYPE=Float DATA-PRIM_TYPE=float> 235 * <EMBED CLASS='external-html' DATA-TYPE=Float DATA-FILE-ID=RJ_ARR_INTO_PRIM_CONS> 236 */ 237 @IntoHTMLTable(background=BlueDither, title="Java-Consumer which accepts Primitive-Floats") 238 @LinkJavaSource(handle="BASIC_TYPES", name="FLOAT") 239 @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="oneArgConsumer") 240 public static void floatArr( 241 final JsonArray ja, 242 final float defaultValue, 243 final int FLAGS, 244 final ToFloatFunction<String> optionalUserParser, 245 final FloatConsumer c 246 ) 247 { 248 Objects.requireNonNull(c, "FloatConsumer parameter 'c' is null"); 249 250 ProcessJsonArray.numericToJava( 251 ja, 252 new SETTINGS_REC_BUILDER<Float, Void>( 253 defaultValue, 254 FLAGS & NOT_ALLOWED_RET_NULL_MASKS, 255 (optionalUserParser == null) ? null : optionalUserParser::applyAsFloat, 256 BASIC_TYPES.PRIMITIVE_FLOAT() 257 ) 258 .oneArgConsumer(c::accept) 259 ); 260 } 261 262 /** 263 * <EMBED CLASS=defs DATA-METH_NAME=boolean DATA-CONS_TYPE=Bool DATA-PRIM_TYPE=boolean> 264 * <EMBED CLASS='external-html' DATA-TYPE=Boolean DATA-FILE-ID=RJ_ARR_INTO_PRIM_CONS> 265 */ 266 @IntoHTMLTable(background=GreenDither, title="Java-Consumer which accepts Primitive-Booleans") 267 @LinkJavaSource(handle="BASIC_TYPES", name="BOOLEAN") 268 @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="oneArgConsumer") 269 public static void booleanArr( 270 final JsonArray ja, 271 final boolean defaultValue, 272 final int FLAGS, 273 final Predicate<String> optionalUserParser, 274 final BoolConsumer c 275 ) 276 { 277 Objects.requireNonNull(c, "BoolConsumer parameter 'c' is null"); 278 279 ProcessJsonArray.booleanToJava( 280 ja, 281 new SETTINGS_REC_BUILDER<Boolean, Void>( 282 defaultValue, 283 FLAGS & NOT_ALLOWED_RET_NULL_MASKS, 284 (optionalUserParser == null) ? null : optionalUserParser::test, 285 BASIC_TYPES.PRIMITIVE_BOOLEAN() 286 ) 287 .oneArgConsumer(c::accept) 288 ); 289 } 290 291 292 293 294 // ******************************************************************************************** 295 // ******************************************************************************************** 296 // IntInt (w/ Array-Indices) Primitive-Consumer Variant 297 // ******************************************************************************************** 298 // ******************************************************************************************** 299 300 301 302 303 /** <EMBED CLASS='external-html' DATA-TYPE=Integer DATA-FILE-ID=RJ_ARR_INTO_PRIM_TRIINT> */ 304 @IntoHTMLTable( 305 background=BlueDither, 306 title="Java-Consumer which accepts Primitive-Integers & Array-Indices" 307 ) 308 @LinkJavaSource(handle="BASIC_TYPES", name="INTEGER") 309 @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="threeArgConsumer") 310 public static void intArr2( 311 final JsonArray ja, 312 final int defaultValue, 313 final int FLAGS, 314 final ToIntFunction<String> optionalUserParser, 315 final TriIntCons c 316 ) 317 { 318 Objects.requireNonNull(c, "TriIntCons parameter 'c' is null"); 319 320 ProcessJsonArray.numericToJava( 321 ja, 322 new SETTINGS_REC_BUILDER<Integer, Void>( 323 defaultValue, 324 FLAGS, 325 (optionalUserParser == null) ? null : optionalUserParser::applyAsInt, 326 BASIC_TYPES.PRIMITIVE_INTEGER() 327 ) 328 .threeArgConsumer(c::accept) 329 ); 330 } 331 332 /** 333 * <EMBED CLASS=defs DATA-METH_NAME=numeric DATA-CONS_TYPE=Short DATA-PRIM_TYPE=short> 334 * <EMBED CLASS='external-html' DATA-TYPE=Short DATA-FILE-ID=RJ_ARR_INTO_PRIM_CONS2> 335 */ 336 @IntoHTMLTable( 337 background=GreenDither, 338 title="Java-Consumer which accepts Primitive Short-Integers & Array-Indices" 339 ) 340 @LinkJavaSource(handle="BASIC_TYPES", name="SHORT") 341 @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="threeArgConsumer") 342 public static void shortArr2( 343 final JsonArray ja, 344 final short defaultValue, 345 final int FLAGS, 346 final ToShortFunction<String> optionalUserParser, 347 final IntIntShortCons c 348 ) 349 { 350 Objects.requireNonNull(c, "IntIntShortCons parameter 'c' is null"); 351 352 ProcessJsonArray.numericToJava( 353 ja, 354 new SETTINGS_REC_BUILDER<Short, Void>( 355 defaultValue, 356 FLAGS & NOT_ALLOWED_RET_NULL_MASKS, 357 (optionalUserParser == null) ? null : optionalUserParser::applyAsShort, 358 BASIC_TYPES.PRIMITIVE_SHORT() 359 ) 360 .threeArgConsumer(c::accept) 361 ); 362 } 363 364 /** 365 * <EMBED CLASS=defs DATA-METH_NAME=numeric DATA-CONS_TYPE=Byte DATA-PRIM_TYPE=byte> 366 * <EMBED CLASS='external-html' DATA-TYPE=Byte DATA-FILE-ID=RJ_ARR_INTO_PRIM_CONS2> 367 */ 368 @IntoHTMLTable( 369 background=BlueDither, 370 title="Java-Consumer which accepts Primitive-Bytes & Array-Indices" 371 ) 372 @LinkJavaSource(handle="BASIC_TYPES", name="BYTE") 373 @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="threeArgConsumer") 374 public static void byteArr2( 375 final JsonArray ja, 376 final byte defaultValue, 377 final int FLAGS, 378 final ToByteFunction<String> optionalUserParser, 379 final IntIntByteCons c 380 ) 381 { 382 Objects.requireNonNull(c, "IntIntByteCons parameter 'c' is null"); 383 384 ProcessJsonArray.numericToJava( 385 ja, 386 new SETTINGS_REC_BUILDER<Byte, Void>( 387 defaultValue, 388 FLAGS & NOT_ALLOWED_RET_NULL_MASKS, 389 (optionalUserParser == null) ? null : optionalUserParser::applyAsByte, 390 BASIC_TYPES.PRIMITIVE_BYTE() 391 ) 392 .threeArgConsumer(c::accept) 393 ); 394 } 395 396 /** 397 * <EMBED CLASS=defs DATA-METH_NAME=numeric DATA-CONS_TYPE=Long DATA-PRIM_TYPE=long> 398 * <EMBED CLASS='external-html' DATA-TYPE=Long DATA-FILE-ID=RJ_ARR_INTO_PRIM_CONS2> 399 */ 400 @IntoHTMLTable( 401 background=GreenDither, 402 title="Java-Consumer which accepts Primitive Long-Integers & Array-Indices" 403 ) 404 @LinkJavaSource(handle="BASIC_TYPES", name="LONG") 405 @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="threeArgConsumer") 406 public static void longArr2( 407 final JsonArray ja, 408 final long defaultValue, 409 final int FLAGS, 410 final ToLongFunction<String> optionalUserParser, 411 final IntIntLongCons c 412 ) 413 { 414 Objects.requireNonNull(c, "IntIntLongCons parameter 'c' is null"); 415 416 ProcessJsonArray.numericToJava( 417 ja, 418 new SETTINGS_REC_BUILDER<Long, Void>( 419 defaultValue, 420 FLAGS & NOT_ALLOWED_RET_NULL_MASKS, 421 (optionalUserParser == null) ? null : optionalUserParser::applyAsLong, 422 BASIC_TYPES.PRIMITIVE_LONG() 423 ) 424 .threeArgConsumer(c::accept) 425 ); 426 } 427 428 /** 429 * <EMBED CLASS=defs DATA-METH_NAME=numeric DATA-CONS_TYPE=Double DATA-PRIM_TYPE=double> 430 * <EMBED CLASS='external-html' DATA-TYPE=Double DATA-FILE-ID=RJ_ARR_INTO_PRIM_CONS2> 431 */ 432 @IntoHTMLTable( 433 background=BlueDither, 434 title="Java-Consumer which accepts Primitive-Doubles & Array-Indices" 435 ) 436 @LinkJavaSource(handle="BASIC_TYPES", name="DOUBLE") 437 @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="threeArgConsumer") 438 public static void doubleArr2( 439 final JsonArray ja, 440 final double defaultValue, 441 final int FLAGS, 442 final ToDoubleFunction<String> optionalUserParser, 443 final IntIntDoubleCons c 444 ) 445 { 446 Objects.requireNonNull(c, "IntIntDoubleCons parameter 'c' is null"); 447 448 ProcessJsonArray.numericToJava( 449 ja, 450 new SETTINGS_REC_BUILDER<Double, Void>( 451 defaultValue, 452 FLAGS & NOT_ALLOWED_RET_NULL_MASKS, 453 (optionalUserParser == null) ? null : optionalUserParser::applyAsDouble, 454 BASIC_TYPES.PRIMITIVE_DOUBLE() 455 ) 456 .threeArgConsumer(c::accept) 457 ); 458 } 459 460 /** 461 * <EMBED CLASS=defs DATA-METH_NAME=numeric DATA-CONS_TYPE=Float DATA-PRIM_TYPE=float> 462 * <EMBED CLASS='external-html' DATA-TYPE=Float DATA-FILE-ID=RJ_ARR_INTO_PRIM_CONS2> 463 */ 464 @IntoHTMLTable( 465 background=GreenDither, 466 title="Java-Consumer which accepts Primitive-Floats & Array-Indices" 467 ) 468 @LinkJavaSource(handle="BASIC_TYPES", name="FLOAT") 469 @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="threeArgConsumer") 470 public static void floatArr2( 471 final JsonArray ja, 472 final float defaultValue, 473 final int FLAGS, 474 final ToFloatFunction<String> optionalUserParser, 475 final IntIntFloatCons c 476 ) 477 { 478 Objects.requireNonNull(c, "IntIntFloatCons parameter 'c' is null"); 479 480 ProcessJsonArray.numericToJava( 481 ja, 482 new SETTINGS_REC_BUILDER<Float, Void>( 483 defaultValue, 484 FLAGS & NOT_ALLOWED_RET_NULL_MASKS, 485 (optionalUserParser == null) ? null : optionalUserParser::applyAsFloat, 486 BASIC_TYPES.PRIMITIVE_FLOAT() 487 ) 488 .threeArgConsumer(c::accept) 489 ); 490 } 491 492 /** 493 * <EMBED CLASS=defs DATA-METH_NAME=boolean DATA-CONS_TYPE=Bool DATA-PRIM_TYPE=boolean> 494 * <EMBED CLASS='external-html' DATA-TYPE=Boolean DATA-FILE-ID=RJ_ARR_INTO_PRIM_CONS2> 495 */ 496 @IntoHTMLTable( 497 background=BlueDither, 498 title="Java-Consumer which accepts Primitive-Booleans & Array-Indices" 499 ) 500 @LinkJavaSource(handle="BASIC_TYPES", name="BOOLEAN") 501 @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="threeArgConsumer") 502 public static void booleanArr2( 503 final JsonArray ja, 504 final boolean defaultValue, 505 final int FLAGS, 506 final Predicate<String> optionalUserParser, 507 final IntIntBoolCons c 508 ) 509 { 510 Objects.requireNonNull(c, "IntIntBoolCons parameter 'c' is null"); 511 512 ProcessJsonArray.booleanToJava( 513 ja, 514 new SETTINGS_REC_BUILDER<Boolean, Void>( 515 defaultValue, 516 FLAGS & NOT_ALLOWED_RET_NULL_MASKS, 517 (optionalUserParser == null) ? null : optionalUserParser::test, 518 BASIC_TYPES.PRIMITIVE_BOOLEAN() 519 ) 520 .threeArgConsumer(c::accept) 521 ); 522 } 523 524}