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