@Test public void testIteratable() throws IOException { final List<String> values = new ArrayList<String>(); values.add("iterItem1"); values.add("iterItem2"); UpdateRequest updateRequest = new UpdateRequest(); updateRequest.deleteByQuery("*:*"); SolrInputDocument doc = new SolrInputDocument(); doc.addField("id", 1); doc.addField("desc", "one", 2.0f); // imagine someone adding a custom Bean that implements Iterable // but is not a Collection doc.addField( "iter", new Iterable<String>() { @Override public Iterator<String> iterator() { return values.iterator(); } }); doc.addField("desc", "1"); updateRequest.add(doc); JavaBinUpdateRequestCodec codec = new JavaBinUpdateRequestCodec(); ByteArrayOutputStream baos = new ByteArrayOutputStream(); codec.marshal(updateRequest, baos); final List<SolrInputDocument> docs = new ArrayList<SolrInputDocument>(); JavaBinUpdateRequestCodec.StreamingUpdateHandler handler = new JavaBinUpdateRequestCodec.StreamingUpdateHandler() { @Override public void update(SolrInputDocument document, UpdateRequest req) { Assert.assertNotNull(req.getParams()); docs.add(document); } }; UpdateRequest updateUnmarshalled = codec.unmarshal(new ByteArrayInputStream(baos.toByteArray()), handler); Assert.assertNull(updateUnmarshalled.getDocuments()); for (SolrInputDocument document : docs) { updateUnmarshalled.add(document); } SolrInputDocument outDoc = updateUnmarshalled.getDocuments().get(0); SolrInputField iter = outDoc.getField("iter"); Assert.assertNotNull("iter field is null", iter); Object iterVal = iter.getValue(); Assert.assertTrue("iterVal is not a Collection", iterVal instanceof Collection); Assert.assertEquals("iterVal contents", values, iterVal); }
@Test public void simple() throws IOException { UpdateRequest updateRequest = new UpdateRequest(); updateRequest.deleteById("*:*"); updateRequest.deleteById("id:5"); updateRequest.deleteByQuery("2*"); updateRequest.deleteByQuery("1*"); updateRequest.setParam("a", "b"); SolrInputDocument doc = new SolrInputDocument(); doc.addField("id", 1); doc.addField("desc", "one", 2.0f); doc.addField("desc", "1"); updateRequest.add(doc); doc = new SolrInputDocument(); doc.addField("id", 2); doc.setDocumentBoost(10.0f); doc.addField("desc", "two", 3.0f); doc.addField("desc", "2"); updateRequest.add(doc); doc = new SolrInputDocument(); doc.addField("id", 3); doc.addField("desc", "three", 3.0f); doc.addField("desc", "3"); updateRequest.add(doc); doc = new SolrInputDocument(); Collection<String> foobar = new HashSet<String>(); foobar.add("baz1"); foobar.add("baz2"); doc.addField("foobar", foobar); updateRequest.add(doc); // updateRequest.setWaitFlush(true); updateRequest.deleteById("2"); updateRequest.deleteByQuery("id:3"); JavaBinUpdateRequestCodec codec = new JavaBinUpdateRequestCodec(); ByteArrayOutputStream baos = new ByteArrayOutputStream(); codec.marshal(updateRequest, baos); final List<SolrInputDocument> docs = new ArrayList<SolrInputDocument>(); JavaBinUpdateRequestCodec.StreamingUpdateHandler handler = new JavaBinUpdateRequestCodec.StreamingUpdateHandler() { @Override public void update(SolrInputDocument document, UpdateRequest req) { Assert.assertNotNull(req.getParams()); docs.add(document); } }; UpdateRequest updateUnmarshalled = codec.unmarshal(new ByteArrayInputStream(baos.toByteArray()), handler); Assert.assertNull(updateUnmarshalled.getDocuments()); for (SolrInputDocument document : docs) { updateUnmarshalled.add(document); } for (int i = 0; i < updateRequest.getDocuments().size(); i++) { SolrInputDocument inDoc = updateRequest.getDocuments().get(i); SolrInputDocument outDoc = updateUnmarshalled.getDocuments().get(i); compareDocs("doc#" + i, inDoc, outDoc); } Assert.assertEquals( updateUnmarshalled.getDeleteById().get(0), updateRequest.getDeleteById().get(0)); Assert.assertEquals( updateUnmarshalled.getDeleteQuery().get(0), updateRequest.getDeleteQuery().get(0)); assertEquals("b", updateUnmarshalled.getParams().get("a")); }
private static void execute$(Update update, GraphStore graphStore, Binding binding) { UpdateRequest request = new UpdateRequest(); request.add(update); execute$(request, graphStore, binding); }