List of usage examples for org.apache.solr.common.util ContentStream getReader
Reader getReader() throws IOException;
From source file:com.sindicetech.siren.solr.handler.JsonLoader.java
License:Open Source License
@Override public void load(final SolrQueryRequest req, final SolrQueryResponse rsp, final ContentStream stream, final UpdateRequestProcessor processor) throws Exception { Reader reader = null;// w w w . j a v a2s. c om try { reader = stream.getReader(); // keep a copy of the body for the source entry // TODO: instead of reading the stream to make a copy, try to create a copy of the json // while parsing it in the JsonReader String body = IOUtils.toString(reader); FieldMappersHandler mappersHandler = new FieldMappersHandler(fieldMappers, req.getCore()); DocumentBuilder docBuilder = new DocumentBuilder(); // Add the source field entry FieldEntry source = new FieldEntry(SOURCE_FIELDNAME, body); docBuilder.add(mappersHandler.map(source)); // Add the id field initialised with a UUID. It will be overwritten if an id field exist in the JSON document. FieldEntry id = new FieldEntry(IdFieldMapper.INPUT_FIELD, UUID.randomUUID().toString().toLowerCase(Locale.ROOT)); docBuilder.add(mappersHandler.map(id)); JsonParser parser = mapper.getJsonFactory().createJsonParser(new StringReader(body)); JsonReader jreader = new JsonReader(parser); FieldEntry entry; while ((entry = jreader.next()) != null) { docBuilder.add(mappersHandler.map(entry)); } // the index schema might have changed req.updateSchemaToLatest(); // check that we have seen all the required field mappers Set<String> missingRequiredMappers = mappersHandler.getMissingRequiredMappers(); if (!missingRequiredMappers.isEmpty()) { throw new SolrException(BAD_REQUEST, "Document is missing the following required fields: " + missingRequiredMappers); } // Create and process the Add command AddUpdateCommand cmd = new AddUpdateCommand(req); cmd.solrDoc = docBuilder.getSolrInputDocument(); processor.processAdd(cmd); } finally { IOUtils.closeQuietly(reader); } }
From source file:org.alfresco.solr.AlfrescoCoreAdminTester.java
License:Open Source License
@SuppressWarnings({ "unchecked", "rawtypes" })
private void testQueryByHandler(NamedList report, SolrCore core, String handler, String query, int count,
String sort, Integer[] sorted, Locale locale, Integer rows, Integer start, ContentStream stream,
String... filters) throws IOException {
// TODO: report to rsp
SolrServletRequest solrReq = null;/*from ww w .ja v a 2 s .com*/
try {
NamedList<Object> queryReport = new SimpleOrderedMap<Object>();
report.add(GUID.generate(), queryReport);
queryReport.add("Query", query);
boolean passed = true;
boolean ordered = true;
solrReq = new SolrServletRequest(core, null);
SolrQueryResponse solrRsp = new SolrQueryResponse();
SolrRequestHandler afts = core.getRequestHandler(handler);
ModifiableSolrParams newParams = new ModifiableSolrParams(solrReq.getParams());
newParams.set("alfresco.getSolrDocumentList", true);
//newParams.set("defType", handler.substring("/".length()));
newParams.set("q", query);
newParams.set("fl", "score,DEBID");
if (rows != null) {
newParams.set("rows", "" + rows);
queryReport.add("Rows", rows);
} else {
newParams.set("rows", "" + Integer.MAX_VALUE);
}
if (start != null) {
newParams.set("start", "" + start);
queryReport.add("Start", start);
}
if (sort != null) {
newParams.set("sort", sort);
queryReport.add("Sort", sort);
}
if (locale != null) {
newParams.set("locale", locale.toString());
queryReport.add("Locale", locale.toString());
}
if (filters != null) {
for (String filter : filters) {
if (filter != null) {
newParams.add("fq", filter);
}
}
queryReport.add("Filters", filters);
}
solrReq.setParams(newParams);
if (stream != null) {
ArrayList<ContentStream> streams = new ArrayList<ContentStream>();
streams.add(stream);
solrReq.setContentStreams(streams);
String streamStr = null;
try (Reader reader = stream.getReader()) {
streamStr = IOUtils.toString(reader);
}
queryReport.add("Stream", streamStr);
}
afts.handleRequest(solrReq, solrRsp);
SolrDocumentList ds = (SolrDocumentList) solrRsp.getValues().get("responseSolrDocumentList");
if (ds != null) {
if (ds.size() != count) {
passed = false;
ordered = false;
queryReport.add("Expected", count);
queryReport.add("Found", ds.size());
} else {
queryReport.add("Found", ds.size());
}
if (sorted != null) {
int sz = sorted.length;
int[] dbids = new int[sz];
SolrIndexSearcher searcher = solrReq.getSearcher();
Iterator<SolrDocument> iterator = ds.iterator();
for (int i = 0; i < sz; i++) {
SolrDocument doc = iterator.next();
dbids[i] = Integer.valueOf(((IndexableField) doc.getFirstValue("DBID")).stringValue());
if (ordered) {
if ((sorted[i] != null) && (dbids[i] != sorted[i].intValue())) {
ordered = false;
queryReport.add("Sort at " + i + " expected", sorted[i]);
queryReport.add("Sort at " + i + " found", dbids[i]);
}
}
}
if (ordered) {
queryReport.add("Order", "Passed");
} else {
queryReport.add("Order", "FAILED");
StringBuilder builder = new StringBuilder();
for (int i = 0; i < dbids.length; i++) {
if (builder.length() > 0) {
builder.append(", ");
}
builder.append(dbids[i]);
}
queryReport.add("Sorted as ", builder.toString());
}
} else {
}
if (passed) {
queryReport.add("Count", "Passed");
} else {
queryReport.add("Count", "FAILED");
}
} else {
queryReport.add("Test", "ERROR");
}
} finally {
if (solrReq != null) {
solrReq.close();
}
}
}