All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.algolia.search.models.rules.ConsequenceQuery Maven / Gradle / Ivy

package com.algolia.search.models.rules;

import com.algolia.search.Defaults;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.ObjectCodec;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.*;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import java.io.IOException;
import java.io.Serializable;
import java.util.List;
import java.util.stream.Collectors;

/**
 * Consequence parameter. More information:
 *
 * @see Algolia.com
 */
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonDeserialize(using = ConsequenceQueryDeserializer.class)
public class ConsequenceQuery implements Serializable {

  private List edits;

  public List getEdits() {
    return edits;
  }

  public ConsequenceQuery setEdits(List edits) {
    this.edits = edits;
    return this;
  }
}

class ConsequenceQueryDeserializer extends JsonDeserializer {
  @Override
  public ConsequenceQuery deserialize(JsonParser jp, DeserializationContext ctxt)
      throws IOException {
    ObjectCodec oc = jp.getCodec();
    JsonNode node = oc.readTree(jp);
    ObjectMapper objectMapper = Defaults.getObjectMapper();

    if (node.has("edits")) {
      ObjectReader reader = objectMapper.readerFor(new TypeReference>() {});
      List list = reader.readValue(node.get("edits"));
      return new ConsequenceQuery().setEdits(list);
    } else {

      ObjectReader reader = objectMapper.readerFor(new TypeReference>() {});
      List list = reader.readValue(node);

      List edits =
          list.stream().map(r -> new Edit(EditType.REMOVE, r, null)).collect(Collectors.toList());

      return new ConsequenceQuery().setEdits(edits);
    }
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy