11package com .algolia .search .inputs .query_rules ;
22
3+ import com .algolia .search .Defaults ;
34import com .algolia .search .objects .*;
45import com .fasterxml .jackson .annotation .JsonAnySetter ;
56import com .fasterxml .jackson .annotation .JsonInclude ;
67import com .fasterxml .jackson .annotation .JsonSetter ;
8+ import com .fasterxml .jackson .core .JsonParser ;
9+ import com .fasterxml .jackson .core .ObjectCodec ;
10+ import com .fasterxml .jackson .core .type .TypeReference ;
11+ import com .fasterxml .jackson .databind .*;
12+ import com .fasterxml .jackson .databind .annotation .JsonDeserialize ;
13+ import java .io .IOException ;
714import java .util .List ;
815
916@ SuppressWarnings ({"WeakerAccess" , "unused" })
1017@ JsonInclude (JsonInclude .Include .NON_NULL )
11- public class ConsequenceParams extends Query {
18+ public class ConsequenceParams < T > extends Query {
1219 private ConsequenceQuery query ;
13- private List <String > automaticFacetFilters ;
14- private List <String > automaticOptionalFacetFilters ;
20+
21+ @ JsonDeserialize (using = AutomaticFacetFilterDeserializer .class )
22+ private List <T > automaticFacetFilters ;
23+
24+ @ JsonDeserialize (using = AutomaticFacetFilterDeserializer .class )
25+ private List <T > automaticOptionalFacetFilters ;
1526
1627 public ConsequenceParams () {}
1728
@@ -24,23 +35,22 @@ public ConsequenceParams setQuery(ConsequenceQuery query) {
2435 return this ;
2536 }
2637
27- public List <String > getAutomaticFacetFilters () {
38+ public List <T > getAutomaticFacetFilters () {
2839 return automaticFacetFilters ;
2940 }
3041
31- public ConsequenceParams setAutomaticFacetFilters (List <String > automaticFacetFilters ) {
42+ public ConsequenceParams setAutomaticFacetFilters (List <T > automaticFacetFilters ) {
3243 this .automaticFacetFilters = automaticFacetFilters ;
3344 return this ;
3445 }
3546
36- public List <String > getAutomaticOptionalFacetFilters () {
47+ public List <T > getAutomaticOptionalFacetFilters () {
3748 return automaticOptionalFacetFilters ;
3849 }
3950
4051 // Fields from Query
4152
42- public ConsequenceParams setAutomaticOptionalFacetFilters (
43- List <String > automaticOptionalFacetFilters ) {
53+ public ConsequenceParams setAutomaticOptionalFacetFilters (List <T > automaticOptionalFacetFilters ) {
4454 this .automaticOptionalFacetFilters = automaticOptionalFacetFilters ;
4555 return this ;
4656 }
@@ -129,12 +139,13 @@ public Long getMaxFacetHits() {
129139 return maxFacetHits ;
130140 }
131141
132- public ConsequenceParams setMaxFacetHits (Integer maxFacetHits ) {
142+ @ JsonSetter
143+ public ConsequenceParams setMaxFacetHits (Long maxFacetHits ) {
133144 return (ConsequenceParams ) super .setMaxFacetHits (maxFacetHits );
134145 }
135146
136- @ JsonSetter
137- public ConsequenceParams setMaxFacetHits (Long maxFacetHits ) {
147+ @ Deprecated
148+ public ConsequenceParams setMaxFacetHits (Integer maxFacetHits ) {
138149 return (ConsequenceParams ) super .setMaxFacetHits (maxFacetHits );
139150 }
140151
@@ -183,12 +194,13 @@ public Long getMaxValuesPerFacet() {
183194 return maxValuesPerFacet ;
184195 }
185196
186- public ConsequenceParams setMaxValuesPerFacet (Integer maxValuesPerFacet ) {
197+ @ JsonSetter
198+ public ConsequenceParams setMaxValuesPerFacet (Long maxValuesPerFacet ) {
187199 return (ConsequenceParams ) super .setMaxValuesPerFacet (maxValuesPerFacet );
188200 }
189201
190- @ JsonSetter
191- public ConsequenceParams setMaxValuesPerFacet (Long maxValuesPerFacet ) {
202+ @ Deprecated
203+ public ConsequenceParams setMaxValuesPerFacet (Integer maxValuesPerFacet ) {
192204 return (ConsequenceParams ) super .setMaxValuesPerFacet (maxValuesPerFacet );
193205 }
194206
@@ -324,49 +336,51 @@ public Long getPage() {
324336 return page ;
325337 }
326338
327- public ConsequenceParams setPage (Integer page ) {
339+ public ConsequenceParams setPage (Long page ) {
328340 return (ConsequenceParams ) super .setPage (page );
329341 }
330342
331- public ConsequenceParams setPage (Long page ) {
343+ public ConsequenceParams setPage (Integer page ) {
332344 return (ConsequenceParams ) super .setPage (page );
333345 }
334346
335347 public Long getHitsPerPage () {
336348 return hitsPerPage ;
337349 }
338350
339- public ConsequenceParams setHitsPerPage (Integer hitsPerPage ) {
351+ @ JsonSetter
352+ public ConsequenceParams setHitsPerPage (Long hitsPerPage ) {
340353 return (ConsequenceParams ) super .setHitsPerPage (hitsPerPage );
341354 }
342355
343- @ JsonSetter
344- public ConsequenceParams setHitsPerPage (Long hitsPerPage ) {
356+ @ Deprecated
357+ public ConsequenceParams setHitsPerPage (Integer hitsPerPage ) {
345358 return (ConsequenceParams ) super .setHitsPerPage (hitsPerPage );
346359 }
347360
348361 public Long getOffset () {
349362 return offset ;
350363 }
351364
352- public ConsequenceParams setOffset (Integer offset ) {
365+ public ConsequenceParams setOffset (Long offset ) {
353366 return (ConsequenceParams ) super .setOffset (offset );
354367 }
355368
356- public ConsequenceParams setOffset (Long offset ) {
369+ public ConsequenceParams setOffset (Integer offset ) {
357370 return (ConsequenceParams ) super .setOffset (offset );
358371 }
359372
360373 public Long getLength () {
361374 return length ;
362375 }
363376
364- public ConsequenceParams setLength (Integer length ) {
377+ @ JsonSetter
378+ public ConsequenceParams setLength (Long length ) {
365379 return (ConsequenceParams ) super .setLength (length );
366380 }
367381
368- @ JsonSetter
369- public ConsequenceParams setLength (Long length ) {
382+ @ Deprecated
383+ public ConsequenceParams setLength (Integer length ) {
370384 return (ConsequenceParams ) super .setLength (length );
371385 }
372386
@@ -489,3 +503,36 @@ public ConsequenceParams addCustomParameter(String key, String value) {
489503 return (ConsequenceParams ) super .addCustomParameter (key , value );
490504 }
491505}
506+
507+ class AutomaticFacetFilterDeserializer extends JsonDeserializer {
508+
509+ /**
510+ * This object can be a List<String> or a List<AutomaticFacetFilter> so it needs a custom
511+ * deserializer
512+ *
513+ * @param jp
514+ * @param ctxt
515+ * @return
516+ * @throws IOException
517+ */
518+ @ Override
519+ public Object deserialize (JsonParser jp , DeserializationContext ctxt ) throws IOException {
520+
521+ ObjectCodec oc = jp .getCodec ();
522+ JsonNode node = oc .readTree (jp );
523+ ObjectMapper objectMapper = Defaults .DEFAULT_OBJECT_MAPPER ;
524+
525+ if ((!node .isNull () && node .size () > 0 )) {
526+ if (node .get (0 ).has ("disjunctive" ) || node .get (0 ).has ("score" )) {
527+ ObjectReader reader =
528+ objectMapper .readerFor (new TypeReference <List <AutomaticFacetFilter >>() {});
529+ return reader .readValue (node );
530+ } else {
531+ ObjectReader reader = objectMapper .readerFor (new TypeReference <List <String >>() {});
532+ return reader .readValue (node );
533+ }
534+ } else {
535+ return null ;
536+ }
537+ }
538+ }
0 commit comments