001package Torello.Java.JSON; 002 003import Torello.Java.StringParse; 004import Torello.Java.UnreachableError; 005 006import Torello.Java.Additional.Ret3; 007import Torello.Java.Additional.EffectivelyFinal; 008import Torello.Java.Additional.Counter; 009 010import Torello.Java.Function.ToByteFunction; 011import Torello.Java.Function.ToFloatFunction; 012import Torello.Java.Function.ToShortFunction; 013 014import Torello.JavaDoc.StaticFunctional; 015import Torello.JavaDoc.JDHeaderBackgroundImg; 016import Torello.JavaDoc.LinkJavaSource; 017 018import Torello.JavaDoc.IntoHTMLTable; 019import static Torello.JavaDoc.IntoHTMLTable.Background.GreenDither; 020import static Torello.JavaDoc.IntoHTMLTable.Background.BlueDither; 021 022import java.util.Objects; 023 024import java.util.stream.Stream; 025import java.util.stream.IntStream; 026import java.util.stream.LongStream; 027import java.util.stream.DoubleStream; 028 029import java.util.function.ToIntFunction; 030import java.util.function.ToLongFunction; 031import java.util.function.ToDoubleFunction; 032import java.util.function.Predicate; 033import java.util.function.Function; 034 035import javax.json.JsonArray; 036import javax.json.Json; 037 038import static Torello.Java.JSON.JFlag.NOT_ALLOWED_RET_NULL_MASKS; 039 040 041/** 042 * Parses Multi-Dimensional JSON Array's into Multi-Dimensional Java Array's. 043 * 044 * <EMBED CLASS='external-html' DATA-FILE-ID=GLASS_FISH_NOTE> 045 * <EMBED CLASS='external-html' DATA-FILE-ID=RJA_DIM_N> 046 * <EMBED CLASS='external-html' DATA-FILE-ID=JSON_BINDING_NOTE> 047 * 048 * <BR /><HR> <BR /> 049 * <EMBED CLASS='external-html' DATA-FILE-ID=RJ_ARR_DIMN> 050 * <EMBED CLASS='external-html' DATA-FILE-ID=RJ_PT_DIMN> 051 * 052 * <EMBED CLASS=globalDefs DATA-A_AN=A> 053 * @see Json 054 * @see JsonArray 055 */ 056@StaticFunctional 057@JDHeaderBackgroundImg(EmbedTagFileID="RJA_JDHBI_DIM_N") 058public class RJArrDimN 059{ 060 private RJArrDimN() { } 061 062 063 private static final boolean REFERENCE_1D_ARRAY = true; 064 private static final boolean BOXED_1D_ARRAY = true; 065 private static final boolean PRIMITIVE_1D_ARRAY = false; 066 067 068 // ******************************************************************************************** 069 // ******************************************************************************************** 070 // Primitive Multi-Dimensional Array Methods 071 // ******************************************************************************************** 072 // ******************************************************************************************** 073 074 075 /** 076 * <EMBED CLASS=defs DATA-A_AN=An DATA-TYPE=int DATA-DEFVAL="-1"> 077 * <EMBED CLASS='external-html' DATA-FILE-ID=RJ_ARR_DIMN_METH_PRIM> 078 */ 079 @IntoHTMLTable(background=GreenDither, title="Multi-Dimensional Array of Primitive-Integers") 080 @LinkJavaSource(handle="BASIC_TYPES", name="INTEGER") 081 @LinkJavaSource(handle="STREAM_BUILDER", name="intStream") 082 @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForDimNArrays") 083 public static <T> T intArr( 084 final JsonArray ja, 085 final int defaultValue, 086 final int FLAGS, 087 final ToIntFunction<String> optionalUserParser, 088 final Class<T> retArrClass 089 ) 090 { 091 return ProcessMultiDimJsonArray.jsonArrayToJava( 092 ja, 093 // new SettingsRec<Integer, IntStream>( 094 SETTINGS_REC_BUILDER.createForDimNArrays( 095 defaultValue, 096 FLAGS & NOT_ALLOWED_RET_NULL_MASKS, 097 (optionalUserParser == null) ? null : optionalUserParser::applyAsInt, 098 BASIC_TYPES.PRIMITIVE_INTEGER(), 099 STREAM_BUILDER.intStream(), 100 PRIMITIVE_1D_ARRAY 101 ), 102 retArrClass 103 ); 104 } 105 106 /** 107 * <EMBED CLASS=defs DATA-TYPE=long DATA-DEFVAL="-1"> 108 * <EMBED CLASS='external-html' DATA-FILE-ID=RJ_ARR_DIMN_METH_PRIM> 109 */ 110 @IntoHTMLTable(background=BlueDither, 111 title="Multi-Dimensional Array of Primitive Long-Integers") 112 @LinkJavaSource(handle="BASIC_TYPES", name="LONG") 113 @LinkJavaSource(handle="STREAM_BUILDER", name="longStream") 114 @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForDimNArrays") 115 public static <T> T longArr( 116 final JsonArray ja, 117 final long defaultValue, 118 final int FLAGS, 119 final ToLongFunction<String> optionalUserParser, 120 final Class<T> retArrClass 121 ) 122 { 123 return ProcessMultiDimJsonArray.jsonArrayToJava( 124 ja, 125 // new SettingsRec<Long, LongStream>( 126 SETTINGS_REC_BUILDER.createForDimNArrays( 127 defaultValue, 128 FLAGS & NOT_ALLOWED_RET_NULL_MASKS, 129 (optionalUserParser == null) ? null : optionalUserParser::applyAsLong, 130 BASIC_TYPES.PRIMITIVE_LONG(), 131 STREAM_BUILDER.longStream(), 132 PRIMITIVE_1D_ARRAY 133 ), 134 retArrClass 135 ); 136 } 137 138 /** 139 * <EMBED CLASS=defs DATA-TYPE=double DATA-DEFVAL="-1.0"> 140 * <EMBED CLASS='external-html' DATA-FILE-ID=RJ_ARR_DIMN_METH_PRIM> 141 */ 142 @IntoHTMLTable(background=GreenDither, 143 title="Multi-Dimensional Array of Primitive-Doubles") 144 @LinkJavaSource(handle="BASIC_TYPES", name="DOUBLE") 145 @LinkJavaSource(handle="STREAM_BUILDER", name="doubleStream") 146 @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForDimNArrays") 147 public static <T> T doubleArr( 148 final JsonArray ja, 149 final double defaultValue, 150 final int FLAGS, 151 final ToDoubleFunction<String> optionalUserParser, 152 final Class<T> retArrClass 153 ) 154 { 155 return ProcessMultiDimJsonArray.jsonArrayToJava( 156 ja, 157 // new SettingsRec<Double, DoubleStream>( 158 SETTINGS_REC_BUILDER.createForDimNArrays( 159 defaultValue, 160 FLAGS & NOT_ALLOWED_RET_NULL_MASKS, 161 (optionalUserParser == null) ? null : optionalUserParser::applyAsDouble, 162 BASIC_TYPES.PRIMITIVE_DOUBLE(), 163 STREAM_BUILDER.doubleStream(), 164 PRIMITIVE_1D_ARRAY 165 ), 166 retArrClass 167 ); 168 } 169 170 /** 171 * <EMBED CLASS=defs DATA-TYPE=short DATA-DEFVAL="-1"> 172 * <EMBED CLASS='external-html' DATA-FILE-ID=RJ_ARR_DIMN_METH_PRIM> 173 */ 174 @IntoHTMLTable(background=BlueDither, 175 title="Multi-Dimensional Array of Primitive Short-Integers") 176 @LinkJavaSource(handle="BASIC_TYPES", name="SHORT") 177 @LinkJavaSource(handle="STREAM_BUILDER", name="normalStream") 178 @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForDimNArrays") 179 public static <T> T shortArr( 180 final JsonArray ja, 181 final short defaultValue, 182 final int FLAGS, 183 final ToShortFunction<String> optionalUserParser, 184 final Class<T> retArrClass 185 ) 186 { 187 return ProcessMultiDimJsonArray.jsonArrayToJava( 188 ja, 189 // new SettingsRec<Short, Stream<Short>>( 190 SETTINGS_REC_BUILDER.createForDimNArrays( 191 defaultValue, 192 FLAGS & NOT_ALLOWED_RET_NULL_MASKS, 193 (optionalUserParser == null) ? null : optionalUserParser::applyAsShort, 194 BASIC_TYPES.BOXED_SHORT(), 195 STREAM_BUILDER.normalStream(), 196 PRIMITIVE_1D_ARRAY 197 ), 198 retArrClass 199 ); 200 } 201 202 /** 203 * <EMBED CLASS=defs DATA-TYPE=byte DATA-DEFVAL="-1"> 204 * <EMBED CLASS='external-html' DATA-FILE-ID=RJ_ARR_DIMN_METH_PRIM> 205 */ 206 @IntoHTMLTable(background=GreenDither, 207 title="Multi-Dimensional Array of Primitive-Bytes") 208 @LinkJavaSource(handle="BASIC_TYPES", name="BYTE") 209 @LinkJavaSource(handle="STREAM_BUILDER", name="normalStream") 210 @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForDimNArrays") 211 public static <T> T byteArr( 212 final JsonArray ja, 213 final byte defaultValue, 214 final int FLAGS, 215 final ToByteFunction<String> optionalUserParser, 216 final Class<T> retArrClass 217 ) 218 { 219 return ProcessMultiDimJsonArray.jsonArrayToJava( 220 ja, 221 // new SettingsRec<Byte, Stream<Byte>>( 222 SETTINGS_REC_BUILDER.createForDimNArrays( 223 defaultValue, 224 FLAGS & NOT_ALLOWED_RET_NULL_MASKS, 225 (optionalUserParser == null) ? null : optionalUserParser::applyAsByte, 226 BASIC_TYPES.BOXED_BYTE(), 227 STREAM_BUILDER.normalStream(), 228 PRIMITIVE_1D_ARRAY 229 ), 230 retArrClass 231 ); 232 } 233 234 /** 235 * <EMBED CLASS=defs DATA-TYPE=float DATA-DEFVAL="-1.0f"> 236 * <EMBED CLASS='external-html' DATA-FILE-ID=RJ_ARR_DIMN_METH_PRIM> 237 */ 238 @IntoHTMLTable(background=BlueDither, 239 title="Multi-Dimensional Array of Primitive-Floats") 240 @LinkJavaSource(handle="BASIC_TYPES", name="FLOAT") 241 @LinkJavaSource(handle="STREAM_BUILDER", name="normalStream") 242 @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForDimNArrays") 243 public static <T> T floatArr( 244 final JsonArray ja, 245 final float defaultValue, 246 final int FLAGS, 247 final ToFloatFunction<String> optionalUserParser, 248 final Class<T> retArrClass 249 ) 250 { 251 return ProcessMultiDimJsonArray.jsonArrayToJava( 252 ja, 253 // new SettingsRec<Float, Stream<Float>>( 254 SETTINGS_REC_BUILDER.createForDimNArrays( 255 defaultValue, 256 FLAGS & NOT_ALLOWED_RET_NULL_MASKS, 257 (optionalUserParser == null) ? null : optionalUserParser::applyAsFloat, 258 BASIC_TYPES.BOXED_FLOAT(), 259 STREAM_BUILDER.normalStream(), 260 PRIMITIVE_1D_ARRAY 261 ), 262 retArrClass 263 ); 264 } 265 266 /** 267 * <EMBED CLASS=defs DATA-TYPE=boolean DATA-DEFVAL="false"> 268 * <EMBED CLASS='external-html' DATA-FILE-ID=RJ_ARR_DIMN_METH_PRIM> 269 */ 270 @IntoHTMLTable(background=GreenDither, title="Multi-Dimensional Array of Primitive-Booleans") 271 @LinkJavaSource(handle="BASIC_TYPES", name="BOOLEAN") 272 @LinkJavaSource(handle="STREAM_BUILDER", name="normalStream") 273 @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForDimNArrays") 274 public static <T> T booleanArr( 275 final JsonArray ja, 276 final boolean defaultValue, 277 final int FLAGS, 278 final Predicate<String> optionalUserParser, 279 final Class<T> retArrClass 280 ) 281 { 282 return ProcessMultiDimJsonArray.jsonArrayToJava( 283 ja, 284 // new SettingsRec<Boolean, Stream<Boolean>>( 285 SETTINGS_REC_BUILDER.createForDimNArrays( 286 defaultValue, 287 FLAGS & NOT_ALLOWED_RET_NULL_MASKS, 288 (optionalUserParser == null) ? null : optionalUserParser::test, 289 BASIC_TYPES.BOXED_BOOLEAN(), 290 STREAM_BUILDER.normalStream(), 291 PRIMITIVE_1D_ARRAY 292 ), 293 retArrClass 294 ); 295 } 296 297 298 // ******************************************************************************************** 299 // ******************************************************************************************** 300 // Boxed-Primitive Multi-Dimensional Array Methods 301 // ******************************************************************************************** 302 // ******************************************************************************************** 303 304 305 /** 306 * <EMBED CLASS=defs DATA-A_AN=An DATA-TYPE=Integer DATA-METH_NAME=INTEGER DATA-DEF_VAL="-1"> 307 * <EMBED CLASS='external-html' DATA-FILE-ID=RJ_ARR_DIMN_METH_BOXED> 308 */ 309 @IntoHTMLTable(background=BlueDither, title="Multi-Dimensional Array of Boxed-Integers") 310 @LinkJavaSource(handle="BASIC_TYPES", name="INTEGER") 311 @LinkJavaSource(handle="STREAM_BUILDER", name="normalStream") 312 @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForDimNArrays") 313 public static <T> T arrINTEGER( 314 final JsonArray ja, 315 final int defaultValue, 316 final int FLAGS, 317 final Function<String, Integer> optionalUserParser, 318 final Class<T> retArrClass 319 ) 320 { 321 return ProcessMultiDimJsonArray.jsonArrayToJava( 322 ja, 323 // new SettingsRec<Integer, Stream<Integer>>( 324 SETTINGS_REC_BUILDER.createForDimNArrays( 325 defaultValue, 326 FLAGS, 327 optionalUserParser, 328 BASIC_TYPES.BOXED_INTEGER(), 329 STREAM_BUILDER.normalStream(), 330 BOXED_1D_ARRAY 331 ), 332 retArrClass 333 ); 334 } 335 336 /** 337 * <EMBED CLASS=defs DATA-TYPE=Long DATA-METH_NAME=LONG DATA-DEF_VAL="-1"> 338 * <EMBED CLASS='external-html' DATA-FILE-ID=RJ_ARR_DIMN_METH_BOXED> 339 */ 340 @IntoHTMLTable(background=GreenDither, title="Multi-Dimensional Array of Boxed Long-Integers") 341 @LinkJavaSource(handle="BASIC_TYPES", name="LONG") 342 @LinkJavaSource(handle="STREAM_BUILDER", name="normalStream") 343 @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForDimNArrays") 344 public static <T> T arrLONG( 345 final JsonArray ja, 346 final long defaultValue, 347 final int FLAGS, 348 final Function<String, Long> optionalUserParser, 349 final Class<T> retArrClass 350 ) 351 { 352 return ProcessMultiDimJsonArray.jsonArrayToJava( 353 ja, 354 // new SettingsRec<Long, Stream<Long>>( 355 SETTINGS_REC_BUILDER.createForDimNArrays( 356 defaultValue, 357 FLAGS, 358 optionalUserParser, 359 BASIC_TYPES.BOXED_LONG(), 360 STREAM_BUILDER.normalStream(), 361 BOXED_1D_ARRAY 362 ), 363 retArrClass 364 ); 365 } 366 367 /** 368 * <EMBED CLASS=defs DATA-TYPE=Double DATA-METH_NAME=DOUBLE DATA-DEF_VAL="-1.0"> 369 * <EMBED CLASS='external-html' DATA-FILE-ID=RJ_ARR_DIMN_METH_BOXED> 370 */ 371 @IntoHTMLTable(background=BlueDither, title="Multi-Dimensional Array of Boxed-Doubles") 372 @LinkJavaSource(handle="BASIC_TYPES", name="DOUBLE") 373 @LinkJavaSource(handle="STREAM_BUILDER", name="normalStream") 374 @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForDimNArrays") 375 public static <T> T arrDOUBLE( 376 final JsonArray ja, 377 final double defaultValue, 378 final int FLAGS, 379 final Function<String, Double> optionalUserParser, 380 final Class<T> retArrClass 381 ) 382 { 383 return ProcessMultiDimJsonArray.jsonArrayToJava( 384 ja, 385 // new SettingsRec<Double, Stream<Double>>( 386 SETTINGS_REC_BUILDER.createForDimNArrays( 387 defaultValue, 388 FLAGS, 389 optionalUserParser, 390 BASIC_TYPES.BOXED_DOUBLE(), 391 STREAM_BUILDER.normalStream(), 392 BOXED_1D_ARRAY 393 ), 394 retArrClass 395 ); 396 } 397 398 /** 399 * <EMBED CLASS=defs DATA-TYPE=Short DATA-METH_NAME=SHORT DATA-DEF_VAL="-1"> 400 * <EMBED CLASS='external-html' DATA-FILE-ID=RJ_ARR_DIMN_METH_BOXED> 401 */ 402 @IntoHTMLTable(background=GreenDither, title="Multi-Dimensional Array of Boxed Short-Integers") 403 @LinkJavaSource(handle="BASIC_TYPES", name="SHORT") 404 @LinkJavaSource(handle="STREAM_BUILDER", name="normalStream") 405 @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForDimNArrays") 406 public static <T> T arrSHORT( 407 final JsonArray ja, 408 final short defaultValue, 409 final int FLAGS, 410 final Function<String, Short> optionalUserParser, 411 final Class<T> retArrClass 412 ) 413 { 414 return ProcessMultiDimJsonArray.jsonArrayToJava( 415 ja, 416 // new SettingsRec<Short, Stream<Short>>( 417 SETTINGS_REC_BUILDER.createForDimNArrays( 418 defaultValue, 419 FLAGS, 420 optionalUserParser, 421 BASIC_TYPES.BOXED_SHORT(), 422 STREAM_BUILDER.normalStream(), 423 BOXED_1D_ARRAY 424 ), 425 retArrClass 426 ); 427 } 428 429 /** 430 * <EMBED CLASS=defs DATA-TYPE=Byte DATA-METH_NAME=BYTE DATA-DEF_VAL="-1"> 431 * <EMBED CLASS='external-html' DATA-FILE-ID=RJ_ARR_DIMN_METH_BOXED> 432 */ 433 @IntoHTMLTable(background=BlueDither, title="Multi-Dimensional Array of Boxed-Bytes") 434 @LinkJavaSource(handle="BASIC_TYPES", name="BYTE") 435 @LinkJavaSource(handle="STREAM_BUILDER", name="normalStream") 436 @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForDimNArrays") 437 public static <T> T arrBYTE( 438 final JsonArray ja, 439 final byte defaultValue, 440 final int FLAGS, 441 final Function<String, Byte> optionalUserParser, 442 final Class<T> retArrClass 443 ) 444 { 445 return ProcessMultiDimJsonArray.jsonArrayToJava( 446 ja, 447 // new SettingsRec<Byte, Stream<Byte>>( 448 SETTINGS_REC_BUILDER.createForDimNArrays( 449 defaultValue, 450 FLAGS, 451 optionalUserParser, 452 BASIC_TYPES.BOXED_BYTE(), 453 STREAM_BUILDER.normalStream(), 454 BOXED_1D_ARRAY 455 ), 456 retArrClass 457 ); 458 } 459 460 /** 461 * <EMBED CLASS=defs DATA-TYPE=Float DATA-METH_NAME=FLOAT DATA-DEF_VAL="-1.0f"> 462 * <EMBED CLASS='external-html' DATA-FILE-ID=RJ_ARR_DIMN_METH_BOXED> 463 */ 464 @IntoHTMLTable(background=GreenDither, title="Multi-Dimensional Array of Boxed-Floats") 465 @LinkJavaSource(handle="BASIC_TYPES", name="FLOAT") 466 @LinkJavaSource(handle="STREAM_BUILDER", name="normalStream") 467 @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForDimNArrays") 468 public static <T> T arrFLOAT( 469 final JsonArray ja, 470 final float defaultValue, 471 final int FLAGS, 472 final Function<String, Float> optionalUserParser, 473 final Class<T> retArrClass 474 ) 475 { 476 return ProcessMultiDimJsonArray.jsonArrayToJava( 477 ja, 478 // new SettingsRec<Float, Stream<Float>>( 479 SETTINGS_REC_BUILDER.createForDimNArrays( 480 defaultValue, 481 FLAGS, 482 optionalUserParser, 483 BASIC_TYPES.BOXED_FLOAT(), 484 STREAM_BUILDER.normalStream(), 485 BOXED_1D_ARRAY 486 ), 487 retArrClass 488 ); 489 } 490 491 /** 492 * <EMBED CLASS=defs DATA-TYPE=Boolean DATA-METH_NAME=BOOLEAN DATA-DEF_VAL=false> 493 * <EMBED CLASS='external-html' DATA-FILE-ID=RJ_ARR_DIMN_METH_BOXED> 494 */ 495 @IntoHTMLTable(background=BlueDither, title="Multi-Dimensional Array of Boxed-Booleans") 496 @LinkJavaSource(handle="BASIC_TYPES", name="BOOLEAN") 497 @LinkJavaSource(handle="STREAM_BUILDER", name="normalStream") 498 @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForDimNArrays") 499 public static <T> T arrBOOLEAN( 500 final JsonArray ja, 501 final boolean defaultValue, 502 final int FLAGS, 503 final Function<String, Boolean> optionalUserParser, 504 final Class<T> retArrClass 505 ) 506 { 507 return ProcessMultiDimJsonArray.jsonArrayToJava( 508 ja, 509 // new SettingsRec<Boolean, Stream<Boolean>>( 510 SETTINGS_REC_BUILDER.createForDimNArrays( 511 defaultValue, 512 FLAGS, 513 optionalUserParser, 514 BASIC_TYPES.BOXED_BOOLEAN(), 515 STREAM_BUILDER.normalStream(), 516 BOXED_1D_ARRAY 517 ), 518 retArrClass 519 ); 520 } 521 522 /** 523 * <EMBED CLASS=defs DATA-TYPE=Number DATA-METH_NAME=Number DATA-DEF_VAL=0> 524 * <EMBED CLASS='external-html' DATA-FILE-ID=RJ_ARR_DIMN_METH_BOXED> 525 */ 526 @IntoHTMLTable(background=GreenDither, title="Multi-Dimensional Array of Best-Fit Boxed-Numbers") 527 @LinkJavaSource(handle="BASIC_TYPES", name="NUMBER") 528 @LinkJavaSource(handle="STREAM_BUILDER", name="normalStream") 529 @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForDimNArrays") 530 public static <T> T arrNumber( 531 final JsonArray ja, 532 final Number defaultValue, 533 final int FLAGS, 534 final Function<String, Number> optionalUserParser, 535 final Class<T> retArrClass 536 ) 537 { 538 return ProcessMultiDimJsonArray.jsonArrayToJava( 539 ja, 540 // new SettingsRec<Number, Stream<Number>>( 541 SETTINGS_REC_BUILDER.createForDimNArrays( 542 defaultValue, 543 FLAGS, 544 optionalUserParser, 545 BASIC_TYPES.NUMBER_REC(), 546 STREAM_BUILDER.normalStream(), 547 BOXED_1D_ARRAY 548 ), 549 retArrClass 550 ); 551 } 552 553 554 // ******************************************************************************************* 555 // ******************************************************************************************* 556 // Non-Primitive Multi-Dimensional Array Methods 557 // ******************************************************************************************* 558 // ******************************************************************************************* 559 560 561 /** 562 * <BR>Invokes: {@link ProcessMultiDimJsonArray#jsonArrayToJava(JsonArray, SettingsRec, Class)} 563 * <BR>Passes: {@code String} Configurations / SettingsRec 564 * <BR>See: Class {@link JFlag} for more information about parameter {@code 'FLAGS'}. 565 * <BR>Note: {@code retArrClass} must be a multi-dimensinal {@code String}-array. 566 * <BR>:(See last <B>"return-type"</B> parameter in example below) 567 * 568 * <BR>COL-SPAN-2: 569 * <DIV CLASS=LOC>{@code 570 * String[][] arr = ReadArrJSON.DimN.strArr(jsonArray, null, 0, String[][].class); 571 * }</DIV> 572 */ 573 @IntoHTMLTable(background=BlueDither, title="Multi-Dimensional Array of Strings") 574 @LinkJavaSource(handle="BASIC_TYPES", name="STRING") 575 @LinkJavaSource(handle="STREAM_BUILDER", name="normalStream") 576 @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForDimNArrays") 577 public static <T> T strArr( 578 final JsonArray ja, 579 final String defaultValue, 580 final int FLAGS, 581 final Class<T> retArrClass 582 ) 583 { 584 return ProcessMultiDimJsonArray.jsonArrayToJava( 585 ja, 586 // new SettingsRec<String, Stream<String>>( 587 SETTINGS_REC_BUILDER.createForDimNArrays( 588 defaultValue, 589 FLAGS, 590 null, // no optional user parser, input is supposed to be a string 591 BASIC_TYPES.STRING_REC(), 592 STREAM_BUILDER.normalStream(), 593 REFERENCE_1D_ARRAY 594 ), 595 retArrClass 596 ); 597 } 598 599 /** 600 * <BR>Invokes: {@link ProcessMultiDimJsonArray#jsonArrayToJava(JsonArray, SettingsRec, Class)} 601 * <BR>Passes: {@code Object} Configurations / SettingsRec 602 * <BR>See: class {@link JFlag} for more information about parameter {@code 'FLAGS'}. 603 * <BR>Note: {@code retArrClass} must be a multi-dimensinal {@code Object}-array. 604 * <BR>:(See last <B>"return-type"</B> parameter in example below) 605 * 606 * <BR>COL-SPAN-2: 607 * <DIV CLASS=LOC>{@code 608 * MyClass[][] arr = ReadArrJSON.DimN.strArr(jsonArray, null, 0, MyClass[][].class); 609 * }</DIV> 610 */ 611 @SuppressWarnings({"rawtypes", "unchecked"}) 612 @IntoHTMLTable(background=GreenDither, title="Multi-Dimensional Array of Object <T>") 613 @LinkJavaSource(handle="BASIC_TYPES", name="OBJECT", paramCount=1) 614 @LinkJavaSource(handle="STREAM_BUILDER", name="normalStream") 615 @LinkJavaSource(handle="SETTINGS_REC_BUILDER", name="createForDimNArrays") 616 public static <T> T objArr( 617 final JsonArray ja, 618 final Object defaultValue, 619 final int FLAGS, 620 final Class<T> retArrClass 621 ) 622 { 623 throw new Torello.Java.ToDoException(); 624 625 /* 626 Class baseClass = // (Class<U>) 627 RJArrDimN.GET_ARRAY_BASE_COMPONENT_CLASS_AND_CHECK 628 (retArrClass, defaultValue); 629 630 return ProcessMultiDimJsonArray.jsonArrayToJava( 631 ja, 632 new SettingsRec /* <T, Stream<T>> * /( 633 defaultValue, 634 FLAGS, 635 optionalUserParser, 636 BASIC_TYPES.OBJECT(baseClass), 637 STREAM_BUILDER.normalStream(), 638 REFERENCE_1D_ARRAY 639 ), 640 retArrClass 641 ); 642 */ 643 } 644 645} 646