in crossdc-commons/src/main/java/org/apache/solr/crossdc/common/MirroredSolrRequestSerializer.java [53:103]
public MirroredSolrRequest deserialize(String topic, byte[] data) {
Map solrRequest;
UpdateRequest updateRequest = new UpdateRequest();
try (JavaBinCodec codec = new JavaBinCodec()) {
ByteArrayInputStream bais = new ByteArrayInputStream(data);
try {
solrRequest = (Map) codec.unmarshal(bais);
if (log.isTraceEnabled()) {
log.trace("Deserialized class={} solrRequest={}", solrRequest.getClass().getName(),
solrRequest);
}
} catch (Exception e) {
log.error("Exception unmarshalling JavaBin", e);
throw new RuntimeException(e);
}
List docs = (List) solrRequest.get("docs");
if (docs != null) {
updateRequest.add(docs);
} else {
updateRequest.add("id", "1"); // TODO huh?
updateRequest.getDocumentsMap().clear();
}
List deletes = (List) solrRequest.get("deletes");
if (deletes != null) {
updateRequest.deleteById(deletes);
}
List deletesQuery = (List) solrRequest.get("deleteQuery");
if (deletesQuery != null) {
for (Object delQuery : deletesQuery) {
updateRequest.deleteByQuery((String) delQuery);
}
}
Map params = (Map) solrRequest.get("params");
if (params != null) {
updateRequest.setParams(ModifiableSolrParams.of(new MapSolrParams(params)));
}
} catch (IOException e) {
log.error("Error in deserialize", e);
throw new RuntimeException(e);
}
return new MirroredSolrRequest(updateRequest);
}