001package Torello.Java.JSON; 002 003import Torello.Java.Function.ToShortFunction; 004import Torello.Java.Function.ToByteFunction; 005import Torello.Java.Function.ToFloatFunction; 006 007import java.util.function.ToIntFunction; 008import java.util.function.ToLongFunction; 009import java.util.function.ToDoubleFunction; 010import java.util.function.Predicate; 011 012import Torello.JavaDoc.LinkJavaSource; 013import Torello.JavaDoc.StaticFunctional; 014import Torello.JavaDoc.JDHeaderBackgroundImg; 015import Torello.JavaDoc.IntoHTMLTable; 016 017// import Torello.JavaDoc.IntoHTMLTable.Background; 018import static Torello.JavaDoc.IntoHTMLTable.Background.*; 019 020import static Torello.Java.JSON.JFlag.NOT_ALLOWED_RET_NULL_MASKS; 021 022import java.util.function.Predicate; 023 024import javax.json.Json; 025import javax.json.JsonArray; 026 027/** 028 * Utilities for parsing Json Array's and sending the parsed values into a Java-Array 029 * 030 * <EMBED CLASS='external-html' DATA-FILE-ID=GLASS_FISH_NOTE> 031 * <EMBED CLASS='external-html' DATA-FILE-ID=RJA_INTO_PRIM_ARR> 032 * <EMBED CLASS='external-html' DATA-FILE-ID=JSON_BINDING_NOTE> 033 * 034 * <BR /><HR><BR /> 035 * <EMBED CLASS='external-html' DATA-FILE-ID=RJ_ARR_PRIM_ARR> 036 * 037 * @see Json 038 * @see JsonArray 039 */ 040@StaticFunctional 041@JDHeaderBackgroundImg(EmbedTagFileID="RJA_JDHBI_PRIM_ARR") 042public class RJArrIntoPrimArray 043{ 044 private RJArrIntoPrimArray() {} 045 046 /** 047 * <EMBED CLASS=defs DATA-TYPE=short DATA-INTERIM=Short> 048 * <EMBED CLASS='external-html' DATA-FILE-ID=RJ_ARR_PRIM_ARR_M_DOC> 049 */ 050 @IntoHTMLTable(background=BlueDither, title="JsonArray of Short") 051 @LinkJavaSource(handle="GENERATE_1DARRAY", name="boxedStreamToPrimitiveArray") 052 public static short[] shortArr( 053 final JsonArray ja, 054 final short defaultValue, 055 final int FLAGS, 056 final ToShortFunction<String> optionalUserParser 057 ) 058 { 059 final short[] retArr = new short[ja.size()]; 060 061 return GENERATE_1DARRAY.boxedStreamToPrimitiveArray( 062 RJArrIntoBoxedStream.shortArr( 063 ja, 064 defaultValue, 065 FLAGS & NOT_ALLOWED_RET_NULL_MASKS, 066 (optionalUserParser == null) ? null : optionalUserParser::applyAsShort 067 ), 068 ja, 069 short.class, 070 (Short s, int i) -> retArr[i] = s.shortValue(), 071 retArr 072 ); 073 } 074 075 /** 076 * <EMBED CLASS=defs DATA-TYPE=byte DATA-INTERIM=Byte> 077 * <EMBED CLASS='external-html' DATA-FILE-ID=RJ_ARR_PRIM_ARR_M_DOC> 078 */ 079 @IntoHTMLTable(background=GreenDither, title="JsonArray of Bytes") 080 @LinkJavaSource(handle="GENERATE_1DARRAY", name="boxedStreamToPrimitiveArray") 081 public static byte[] byteArr( 082 final JsonArray ja, 083 final byte defaultValue, 084 final int FLAGS, 085 final ToByteFunction<String> optionalUserParser 086 ) 087 { 088 final byte[] retArr = new byte[ja.size()]; 089 090 return GENERATE_1DARRAY.boxedStreamToPrimitiveArray( 091 RJArrIntoBoxedStream.byteArr( 092 ja, 093 defaultValue, 094 FLAGS & NOT_ALLOWED_RET_NULL_MASKS, 095 (optionalUserParser == null) ? null : optionalUserParser::applyAsByte 096 ), 097 ja, 098 byte.class, 099 (Byte s, int i) -> retArr[i] = s.byteValue(), 100 retArr 101 ); 102 } 103 104 /** 105 * <EMBED CLASS=defs DATA-TYPE=float DATA-INTERIM=Float> 106 * <EMBED CLASS='external-html' DATA-FILE-ID=RJ_ARR_PRIM_ARR_M_DOC> 107 */ 108 @IntoHTMLTable(background=BlueDither, title="JsonArray of Floats") 109 @LinkJavaSource(handle="GENERATE_1DARRAY", name="boxedStreamToPrimitiveArray") 110 public static float[] floatArr( 111 final JsonArray ja, 112 final float defaultValue, 113 final int FLAGS, 114 final ToFloatFunction<String> optionalUserParser 115 ) 116 { 117 final float[] retArr = new float[ja.size()]; 118 119 return GENERATE_1DARRAY.boxedStreamToPrimitiveArray( 120 RJArrIntoBoxedStream.floatArr( 121 ja, 122 defaultValue, 123 FLAGS & NOT_ALLOWED_RET_NULL_MASKS, 124 (optionalUserParser == null) ? null : optionalUserParser::applyAsFloat 125 ), 126 ja, 127 float.class, 128 (Float s, int i) -> retArr[i] = s.floatValue(), 129 retArr 130 ); 131 } 132 133 /** 134 * <EMBED CLASS=defs DATA-TYPE=boolean DATA-INTERIM=Boolean> 135 * <EMBED CLASS='external-html' DATA-FILE-ID=RJ_ARR_PRIM_ARR_M_DOC> 136 */ 137 @IntoHTMLTable(background=GreenDither, title="JsonArray of Booleans") 138 @LinkJavaSource(handle="GENERATE_1DARRAY", name="boxedStreamToPrimitiveArray") 139 public static boolean[] booleanArr( 140 final JsonArray ja, 141 final boolean defaultValue, 142 final int FLAGS, 143 final Predicate<String> optionalUserParser 144 ) 145 { 146 final boolean[] retArr = new boolean[ja.size()]; 147 148 return GENERATE_1DARRAY.boxedStreamToPrimitiveArray( 149 RJArrIntoBoxedStream.booleanArr( 150 ja, 151 defaultValue, 152 FLAGS & NOT_ALLOWED_RET_NULL_MASKS, 153 (optionalUserParser == null) ? null : optionalUserParser::test 154 ), 155 ja, 156 boolean.class, 157 (Boolean s, int i) -> retArr[i] = s.booleanValue(), 158 retArr 159 ); 160 } 161 162 /** 163 * <BR>Invokes: {@link RJArrIntoPrimStream#intArr(JsonArray, int, int, ToIntFunction)} 164 * <BR>And-Then: {@code toArray()}, as explained in the comments at the top of this class 165 */ 166 @IntoHTMLTable(background=BlueDither, title="JsonArray of Integers") 167 public static int[] intArr( 168 final JsonArray ja, 169 final int defaultValue, 170 final int FLAGS, 171 final ToIntFunction<String> optionalUserParser 172 ) 173 { 174 return RJArrIntoPrimStream 175 .intArr(ja, defaultValue, FLAGS, optionalUserParser) 176 .toArray(); 177 } 178 179 /** 180 * <BR>Invokes: {@link RJArrIntoPrimStream#longArr(JsonArray, long, int, ToLongFunction)} 181 * <BR>And-Then: {@code toArray()}, as explained in the comments at the top of this class 182 */ 183 @IntoHTMLTable(background=GreenDither, title="JsonArray of Longs") 184 public static long[] longArr( 185 final JsonArray ja, 186 final long defaultValue, 187 final int FLAGS, 188 final ToLongFunction<String> optionalUserParser 189 ) 190 { 191 return RJArrIntoPrimStream 192 .longArr(ja, defaultValue, FLAGS, optionalUserParser) 193 .toArray(); 194 } 195 196 /** 197 * <BR>Invokes: 198 * {@link RJArrIntoPrimStream#doubleArr(JsonArray, double, int, ToDoubleFunction)} 199 * <BR>And-Then: {@code toArray()}, as explained in the comments at the top of this class 200 */ 201 @IntoHTMLTable(background=BlueDither, title="JsonArray of Doubles") 202 public static double[] doubleArr( 203 final JsonArray ja, 204 final double defaultValue, 205 final int FLAGS, 206 final ToDoubleFunction<String> optionalUserParser 207 ) 208 { 209 return RJArrIntoPrimStream 210 .doubleArr(ja, defaultValue, FLAGS, optionalUserParser) 211 .toArray(); 212 } 213 214}