@@ -14,31 +14,38 @@ public class DatatypeFeatures
14
14
15
15
protected final static int FEATURE_INDEX_ENUM = 0 ;
16
16
protected final static int FEATURE_INDEX_JSON_NODE = 1 ;
17
+ protected final static int FEATURE_INDEX_DATETIME = 2 ;
17
18
18
- private final int _enabledFor1 , _enabledFor2 ;
19
+ private final int _enabledFor1 , _enabledFor2 , _enabledFor3 ;
19
20
20
- private final int _explicitFor1 , _explicitFor2 ;
21
+ private final int _explicitFor1 , _explicitFor2 , _explicitFor3 ;
21
22
22
23
protected DatatypeFeatures (int enabledFor1 , int explicitFor1 ,
23
- int enabledFor2 , int explicitFor2 ) {
24
+ int enabledFor2 , int explicitFor2 ,
25
+ int enabledFor3 , int explicitFor3 ) {
24
26
_enabledFor1 = enabledFor1 ;
25
27
_explicitFor1 = explicitFor1 ;
26
28
_enabledFor2 = enabledFor2 ;
27
29
_explicitFor2 = explicitFor2 ;
30
+ _enabledFor3 = enabledFor3 ;
31
+ _explicitFor3 = explicitFor3 ;
28
32
}
29
33
30
34
public static DatatypeFeatures defaultFeatures () {
31
35
return DefaultHolder .getDefault ();
32
36
}
33
37
34
38
private DatatypeFeatures _with (int enabledFor1 , int explicitFor1 ,
35
- int enabledFor2 , int explicitFor2 ) {
39
+ int enabledFor2 , int explicitFor2 ,
40
+ int enabledFor3 , int explicitFor3 ) {
36
41
if ((_enabledFor1 == enabledFor1 ) && (_explicitFor1 == explicitFor1 )
37
- && (_enabledFor2 == enabledFor2 ) && (_explicitFor2 == explicitFor2 )) {
42
+ && (_enabledFor2 == enabledFor2 ) && (_explicitFor2 == explicitFor2 )
43
+ && (_enabledFor3 == enabledFor3 ) && (_explicitFor3 == explicitFor3 )) {
38
44
return this ;
39
45
}
40
46
return new DatatypeFeatures (enabledFor1 , explicitFor1 ,
41
- enabledFor2 , explicitFor2 );
47
+ enabledFor2 , explicitFor2 ,
48
+ enabledFor3 , explicitFor3 );
42
49
}
43
50
44
51
/*
@@ -61,10 +68,16 @@ public DatatypeFeatures with(DatatypeFeature f) {
61
68
switch (f .featureIndex ()) {
62
69
case 0 :
63
70
return _with (_enabledFor1 | mask , _explicitFor1 | mask ,
64
- _enabledFor2 , _explicitFor2 );
71
+ _enabledFor2 , _explicitFor2 ,
72
+ _enabledFor3 , _explicitFor3 );
65
73
case 1 :
66
74
return _with (_enabledFor1 , _explicitFor1 ,
67
- _enabledFor2 | mask , _explicitFor2 | mask );
75
+ _enabledFor2 | mask , _explicitFor2 | mask ,
76
+ _enabledFor3 , _explicitFor3 );
77
+ case 2 :
78
+ return _with (_enabledFor1 , _explicitFor1 ,
79
+ _enabledFor2 , _explicitFor2 ,
80
+ _enabledFor3 | mask , _explicitFor3 | mask );
68
81
default :
69
82
VersionUtil .throwInternal ();
70
83
return this ;
@@ -88,10 +101,16 @@ public DatatypeFeatures withFeatures(DatatypeFeature... features) {
88
101
switch (features [0 ].featureIndex ()) {
89
102
case 0 :
90
103
return _with (_enabledFor1 | mask , _explicitFor1 | mask ,
91
- _enabledFor2 , _explicitFor2 );
104
+ _enabledFor2 , _explicitFor2 ,
105
+ _enabledFor3 , _explicitFor3 );
92
106
case 1 :
93
107
return _with (_enabledFor1 , _explicitFor1 ,
94
- _enabledFor2 | mask , _explicitFor2 | mask );
108
+ _enabledFor2 | mask , _explicitFor2 | mask ,
109
+ _enabledFor3 , _explicitFor3 );
110
+ case 2 :
111
+ return _with (_enabledFor1 , _explicitFor1 ,
112
+ _enabledFor2 , _explicitFor2 ,
113
+ _enabledFor3 | mask , _explicitFor3 | mask );
95
114
default :
96
115
VersionUtil .throwInternal ();
97
116
return this ;
@@ -112,10 +131,16 @@ public DatatypeFeatures without(DatatypeFeature f) {
112
131
switch (f .featureIndex ()) {
113
132
case 0 :
114
133
return _with (_enabledFor1 & ~mask , _explicitFor1 | mask ,
115
- _enabledFor2 , _explicitFor2 );
134
+ _enabledFor2 , _explicitFor2 ,
135
+ _enabledFor3 , _explicitFor3 );
116
136
case 1 :
117
137
return _with (_enabledFor1 , _explicitFor1 ,
118
- _enabledFor2 & ~mask , _explicitFor2 | mask );
138
+ _enabledFor2 & ~mask , _explicitFor2 | mask ,
139
+ _enabledFor3 , _explicitFor3 );
140
+ case 2 :
141
+ return _with (_enabledFor1 , _explicitFor1 ,
142
+ _enabledFor2 , _explicitFor2 ,
143
+ _enabledFor3 & ~mask , _explicitFor3 | mask );
119
144
default :
120
145
VersionUtil .throwInternal ();
121
146
return this ;
@@ -139,10 +164,16 @@ public DatatypeFeatures withoutFeatures(DatatypeFeature... features) {
139
164
switch (features [0 ].featureIndex ()) {
140
165
case 0 :
141
166
return _with (_enabledFor1 & ~mask , _explicitFor1 | mask ,
142
- _enabledFor2 , _explicitFor2 );
167
+ _enabledFor2 , _explicitFor2 ,
168
+ _enabledFor3 , _explicitFor3 );
143
169
case 1 :
144
170
return _with (_enabledFor1 , _explicitFor1 ,
145
- _enabledFor2 & ~mask , _explicitFor2 | mask );
171
+ _enabledFor2 & ~mask , _explicitFor2 | mask ,
172
+ _enabledFor3 , _explicitFor3 );
173
+ case 2 :
174
+ return _with (_enabledFor1 , _explicitFor1 ,
175
+ _enabledFor2 , _explicitFor2 ,
176
+ _enabledFor3 & ~mask , _explicitFor3 | mask );
146
177
default :
147
178
VersionUtil .throwInternal ();
148
179
return this ;
@@ -179,6 +210,8 @@ public boolean isEnabled(DatatypeFeature f) {
179
210
return f .enabledIn (_enabledFor1 );
180
211
case 1 :
181
212
return f .enabledIn (_enabledFor2 );
213
+ case 2 :
214
+ return f .enabledIn (_enabledFor3 );
182
215
default :
183
216
VersionUtil .throwInternal ();
184
217
return false ;
@@ -200,6 +233,8 @@ public boolean isExplicitlySet(DatatypeFeature f) {
200
233
return f .enabledIn (_explicitFor1 );
201
234
case 1 :
202
235
return f .enabledIn (_explicitFor2 );
236
+ case 2 :
237
+ return f .enabledIn (_explicitFor3 );
203
238
default :
204
239
VersionUtil .throwInternal ();
205
240
return false ;
@@ -215,15 +250,15 @@ public boolean isExplicitlySet(DatatypeFeature f) {
215
250
* @param f Feature to check
216
251
*
217
252
* @return Whether given feature has been explicitly enabled
218
- *
219
- * @since 2.15
220
253
*/
221
254
public boolean isExplicitlyEnabled (DatatypeFeature f ) {
222
255
switch (f .featureIndex ()) {
223
256
case 0 :
224
257
return f .enabledIn (_explicitFor1 & _enabledFor1 );
225
258
case 1 :
226
259
return f .enabledIn (_explicitFor2 & _enabledFor2 );
260
+ case 2 :
261
+ return f .enabledIn (_explicitFor3 & _enabledFor3 );
227
262
default :
228
263
VersionUtil .throwInternal ();
229
264
return false ;
@@ -239,15 +274,15 @@ public boolean isExplicitlyEnabled(DatatypeFeature f) {
239
274
* @param f Feature to check
240
275
*
241
276
* @return Whether given feature has been explicitly disabled
242
- *
243
- * @since 2.15
244
277
*/
245
278
public boolean isExplicitlyDisabled (DatatypeFeature f ) {
246
279
switch (f .featureIndex ()) {
247
280
case 0 :
248
281
return f .enabledIn (_explicitFor1 & ~_enabledFor1 );
249
282
case 1 :
250
283
return f .enabledIn (_explicitFor2 & ~_enabledFor2 );
284
+ case 2 :
285
+ return f .enabledIn (_explicitFor3 & ~_enabledFor3 );
251
286
default :
252
287
VersionUtil .throwInternal ();
253
288
return false ;
@@ -276,6 +311,11 @@ public Boolean getExplicitState(DatatypeFeature f) {
276
311
return f .enabledIn (_enabledFor2 );
277
312
}
278
313
return null ;
314
+ case 2 :
315
+ if (f .enabledIn (_explicitFor3 )) {
316
+ return f .enabledIn (_enabledFor3 );
317
+ }
318
+ return null ;
279
319
default :
280
320
VersionUtil .throwInternal ();
281
321
return null ;
@@ -298,7 +338,8 @@ private static class DefaultHolder
298
338
static {
299
339
DEFAULT_FEATURES = new DatatypeFeatures (
300
340
collectDefaults (EnumFeature .values ()), 0 ,
301
- collectDefaults (JsonNodeFeature .values ()), 0
341
+ collectDefaults (JsonNodeFeature .values ()), 0 ,
342
+ collectDefaults (DateTimeFeature .values ()), 0
302
343
);
303
344
}
304
345
0 commit comments