public MirroredSolrRequest deserialize()

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);
    }