List of usage examples for com.fasterxml.jackson.core JsonFactory createParser
public JsonParser createParser(String content) throws IOException, JsonParseException
From source file:com.couchbase.lite.replicator.ChangeTracker.java
protected void runLoop() { paused = false;//from w w w .ja v a2s . co m if (client == null) { // This is a race condition that can be reproduced by calling cbpuller.start() and cbpuller.stop() // directly afterwards. What happens is that by the time the Changetracker thread fires up, // the cbpuller has already set this.client to null. See issue #109 Log.w(Log.TAG_CHANGE_TRACKER, "%s: ChangeTracker run() loop aborting because client == null", this); return; } if (mode == ChangeTrackerMode.Continuous) { // there is a failing unit test for this, and from looking at the code the Replication // object will never use Continuous mode anyway. Explicitly prevent its use until // it is demonstrated to actually work. throw new RuntimeException("ChangeTracker does not correctly support continuous mode"); } OkHttpClient httpClient = client.getOkHttpClient(); backoff = new ChangeTrackerBackoff(); while (running) { startTime = System.currentTimeMillis(); Request.Builder builder = new Request.Builder(); URL url = getChangesFeedURL(); builder.url(url); if (usePOST) { builder.header("Content-Type", "application/json").addHeader("User-Agent", Manager.getUserAgent()) .addHeader("Accept-Encoding", "gzip").post(RequestBody.create(JSON, changesFeedPOSTBody())); } addRequestHeaders(builder); // Perform BASIC Authentication if needed builder = RequestUtils.preemptivelySetAuthCredentials(builder, url, authenticator); request = builder.build(); try { String maskedRemoteWithoutCredentials = getChangesFeedURL().toString(); maskedRemoteWithoutCredentials = maskedRemoteWithoutCredentials.replaceAll("://.*:.*@", "://---:---@"); Log.v(Log.TAG_CHANGE_TRACKER, "%s: Making request to %s", this, maskedRemoteWithoutCredentials); call = httpClient.newCall(request); Response response = call.execute(); try { // In case response status is Error, ChangeTracker stops here if (isResponseFailed(response)) { RequestUtils.closeResponseBody(response); if (retryIfFailedPost(response)) continue; break; } // Parse response body ResponseBody responseBody = response.body(); Log.v(Log.TAG_CHANGE_TRACKER, "%s: got response. status: %s mode: %s", this, response.message(), mode); if (responseBody != null) { try { Log.v(Log.TAG_CHANGE_TRACKER, "%s: /entity.getContent(). mode: %s", this, mode); //inputStream = entity.getContent(); inputStream = responseBody.byteStream(); // decompress if contentEncoding is gzip if (Utils.isGzip(response)) inputStream = new GZIPInputStream(inputStream); if (mode == ChangeTrackerMode.LongPoll) { // continuous replications // NOTE: 1. check content length, ObjectMapper().readValue() throws Exception if size is 0. // NOTE: 2. HttpEntity.getContentLength() returns the number of bytes of the content, or a negative number if unknown. // NOTE: 3. If Http Status is error, not parse response body boolean responseOK = false; // default value if (responseBody.contentLength() != 0 && response.code() < 300) { try { Log.v(Log.TAG_CHANGE_TRACKER, "%s: readValue", this); Map<String, Object> fullBody = Manager.getObjectMapper() .readValue(inputStream, Map.class); Log.v(Log.TAG_CHANGE_TRACKER, "%s: /readValue. fullBody: %s", this, fullBody); responseOK = receivedPollResponse(fullBody); } catch (JsonParseException jpe) { Log.w(Log.TAG_CHANGE_TRACKER, "%s: json parsing error; %s", this, jpe.toString()); } catch (JsonMappingException jme) { Log.w(Log.TAG_CHANGE_TRACKER, "%s: json mapping error; %s", this, jme.toString()); } } Log.v(Log.TAG_CHANGE_TRACKER, "%s: responseOK: %s", this, responseOK); if (responseOK) { // TODO: this logic is questionable, there's lots // TODO: of differences in the iOS changetracker code, if (!caughtUp) { caughtUp = true; client.changeTrackerCaughtUp(); } Log.v(Log.TAG_CHANGE_TRACKER, "%s: Starting new longpoll", this); backoff.resetBackoff(); continue; } else { long elapsed = (System.currentTimeMillis() - startTime) / 1000; Log.w(Log.TAG_CHANGE_TRACKER, "%s: Longpoll connection closed (by proxy?) after %d sec", this, elapsed); if (elapsed >= 30) { // Looks like the connection got closed by a proxy (like AWS' load balancer) while the // server was waiting for a change to send, due to lack of activity. // Lower the heartbeat time to work around this, and reconnect: this.heartBeatSeconds = Math.min(this.heartBeatSeconds, (int) (elapsed * 0.75)); Log.v(Log.TAG_CHANGE_TRACKER, "%s: Starting new longpoll", this); backoff.resetBackoff(); continue; } else { Log.d(Log.TAG_CHANGE_TRACKER, "%s: Change tracker calling stop (LongPoll)", this); client.changeTrackerFinished(this); break; } } } else { // one-shot replications Log.v(Log.TAG_CHANGE_TRACKER, "%s: readValue (oneshot)", this); JsonFactory factory = new JsonFactory(); JsonParser jp = factory.createParser(inputStream); JsonToken token; // nextToken() is null => no more token while (((token = jp.nextToken()) != JsonToken.START_ARRAY) && (token != null)) { // ignore these tokens } while (jp.nextToken() == JsonToken.START_OBJECT) { Map<String, Object> change = (Map) Manager.getObjectMapper().readValue(jp, Map.class); if (!receivedChange(change)) { Log.w(Log.TAG_CHANGE_TRACKER, "Received unparseable change line from server: %s", change); } // if not running state anymore, exit from loop. if (!running) break; } if (jp != null) jp.close(); Log.v(Log.TAG_CHANGE_TRACKER, "%s: /readValue (oneshot)", this); client.changeTrackerCaughtUp(); if (isContinuous()) { // if enclosing replication is continuous mode = ChangeTrackerMode.LongPoll; } else { Log.d(Log.TAG_CHANGE_TRACKER, "%s: Change tracker calling stop (OneShot)", this); client.changeTrackerFinished(this); break; } } backoff.resetBackoff(); } finally { try { if (inputStream != null) { inputStream.close(); inputStream = null; } } catch (IOException e) { } } } } finally { RequestUtils.closeResponseBody(response); } } catch (Exception e) { if (!running && e instanceof IOException) { // in this case, just silently absorb the exception because it // frequently happens when we're shutting down and have to // close the socket underneath our read. } else { Log.w(Log.TAG_CHANGE_TRACKER, this + ": Exception in change tracker", e); this.error = e; } backoff.sleepAppropriateAmountOfTime(); } } Log.v(Log.TAG_CHANGE_TRACKER, "%s: Change tracker run loop exiting", this); }
From source file:com.marklogic.client.functionaltest.TestBulkReadWriteWithJacksonParserHandle.java
@Test public void testWriteMultiJSONFilesDefaultMetadata() throws Exception { String docId[] = { "/original.json", "/updated.json", "/constraint1.json" }; String jsonFilename1 = "json-original.json"; String jsonFilename2 = "json-updated.json"; String jsonFilename3 = "constraint1.json"; File jsonFile1 = new File("src/test/java/com/marklogic/client/functionaltest/data/" + jsonFilename1); File jsonFile2 = new File("src/test/java/com/marklogic/client/functionaltest/data/" + jsonFilename2); File jsonFile3 = new File("src/test/java/com/marklogic/client/functionaltest/data/" + jsonFilename3); JSONDocumentManager docMgr = client.newJSONDocumentManager(); docMgr.setMetadataCategories(Metadata.ALL); DocumentWriteSet writeset = docMgr.newWriteSet(); // put meta-data DocumentMetadataHandle mh = setMetadata(); DocumentMetadataHandle mhRead = new DocumentMetadataHandle(); JsonFactory f = new JsonFactory(); JacksonParserHandle jacksonParserHandle1 = new JacksonParserHandle(); JacksonParserHandle jacksonParserHandle2 = new JacksonParserHandle(); JacksonParserHandle jacksonParserHandle3 = new JacksonParserHandle(); jacksonParserHandle1.set(f.createParser(jsonFile1)); jacksonParserHandle2.set(f.createParser(jsonFile2)); jacksonParserHandle3.set(f.createParser(jsonFile3)); writeset.addDefault(mh);/*from w w w . j a v a 2 s .c om*/ writeset.add(docId[0], jacksonParserHandle1); writeset.add(docId[1], jacksonParserHandle2); writeset.add(docId[2], jacksonParserHandle3); docMgr.write(writeset); DocumentPage page = docMgr.read(docId); while (page.hasNext()) { DocumentRecord rec = page.next(); docMgr.readMetadata(rec.getUri(), mhRead); System.out.println(rec.getUri()); validateMetadata(mhRead); } validateMetadata(mhRead); mhRead = null; // Close handles. jacksonParserHandle1.close(); jacksonParserHandle2.close(); jacksonParserHandle3.close(); }
From source file:com.cedarsoft.serialization.test.performance.XmlParserPerformance.java
private void benchParse(@Nonnull JsonFactory factory, @Nonnull String contentSample) throws XMLStreamException, IOException { for (int i = 0; i < BIG; i++) { JsonParser parser = factory.createParser(new StringReader(contentSample)); assertEquals(JsonToken.START_OBJECT, parser.nextToken()); assertEquals(JsonToken.FIELD_NAME, parser.nextToken()); assertEquals("dependent", parser.getCurrentName()); assertEquals(JsonToken.VALUE_FALSE, parser.nextToken()); boolean dependent = parser.getBooleanValue(); assertFalse(dependent);//from w w w .java 2 s.c o m assertEquals(JsonToken.FIELD_NAME, parser.nextToken()); assertEquals("id", parser.getCurrentName()); assertEquals(JsonToken.VALUE_STRING, parser.nextToken()); String id = parser.getText(); assertEquals("Canon Raw", id); assertEquals(JsonToken.FIELD_NAME, parser.nextToken()); assertEquals("extension", parser.getCurrentName()); assertEquals(JsonToken.START_OBJECT, parser.nextToken()); assertEquals(JsonToken.FIELD_NAME, parser.nextToken()); assertEquals("isDefault", parser.getCurrentName()); assertEquals(JsonToken.VALUE_TRUE, parser.nextToken()); boolean isDefault = parser.getBooleanValue(); assertTrue(isDefault); assertEquals(JsonToken.FIELD_NAME, parser.nextToken()); assertEquals("delimiter", parser.getCurrentName()); assertEquals(JsonToken.VALUE_STRING, parser.nextToken()); String delimiter = parser.getText(); assertEquals(".", delimiter); assertEquals(JsonToken.FIELD_NAME, parser.nextToken()); assertEquals("extension", parser.getCurrentName()); assertEquals(JsonToken.VALUE_STRING, parser.nextToken()); String extension = parser.getText(); assertEquals("cr2", extension); assertEquals(JsonToken.END_OBJECT, parser.nextToken()); assertEquals(JsonToken.END_OBJECT, parser.nextToken()); assertNull(parser.nextToken()); parser.close(); FileType type = new FileType(id, new Extension(delimiter, extension, isDefault), dependent); assertNotNull(type); } }
From source file:com.cedarsoft.serialization.test.performance.XmlParserPerformance.java
private void benchParse(@Nonnull JsonFactory factory, @Nonnull byte[] contentSample) throws XMLStreamException, IOException { for (int i = 0; i < BIG; i++) { JsonParser parser = factory.createParser(contentSample); assertEquals(JsonToken.START_OBJECT, parser.nextToken()); assertEquals(JsonToken.FIELD_NAME, parser.nextToken()); assertEquals("id", parser.getCurrentName()); assertEquals(JsonToken.VALUE_STRING, parser.nextToken()); String id = parser.getText(); assertEquals("Canon Raw", id); assertEquals(JsonToken.FIELD_NAME, parser.nextToken()); assertEquals("dependent", parser.getCurrentName()); assertEquals(JsonToken.VALUE_FALSE, parser.nextToken()); boolean dependent = parser.getBooleanValue(); assertFalse(dependent);/*from www. ja va 2s . co m*/ assertEquals(JsonToken.FIELD_NAME, parser.nextToken()); assertEquals("extension", parser.getCurrentName()); assertEquals(JsonToken.START_OBJECT, parser.nextToken()); assertEquals(JsonToken.FIELD_NAME, parser.nextToken()); assertEquals("extension", parser.getCurrentName()); assertEquals(JsonToken.VALUE_STRING, parser.nextToken()); String extension = parser.getText(); assertEquals("cr2", extension); assertEquals(JsonToken.FIELD_NAME, parser.nextToken()); assertEquals("default", parser.getCurrentName()); assertEquals(JsonToken.VALUE_TRUE, parser.nextToken()); boolean isDefault = parser.getBooleanValue(); assertTrue(isDefault); assertEquals(JsonToken.FIELD_NAME, parser.nextToken()); assertEquals("delimiter", parser.getCurrentName()); assertEquals(JsonToken.VALUE_STRING, parser.nextToken()); String delimiter = parser.getText(); assertEquals(".", delimiter); assertEquals(JsonToken.END_OBJECT, parser.nextToken()); assertEquals(JsonToken.END_OBJECT, parser.nextToken()); assertNull(parser.nextToken()); parser.close(); FileType type = new FileType(id, new Extension(delimiter, extension, isDefault), dependent); assertNotNull(type); } }
From source file:com.cedarsoft.serialization.test.performance.XmlParserPerformance.java
private void benchParseMapper(@Nonnull JsonFactory factory, @Nonnull String contentSample) throws XMLStreamException, IOException { ObjectMapper mapper = new ObjectMapper(); for (int i = 0; i < BIG; i++) { JsonParser parser = factory.createParser(new StringReader(contentSample)); assertNotNull(/*from w w w . j ava 2 s . c o m*/ mapper.readValue(parser, com.cedarsoft.serialization.test.performance.jaxb.FileType.class)); } }
From source file:com.tage.calcite.adapter.druid.DruidConnectionImpl.java
/** Parses the output of a {@code topN} query, sending the results to a * {@link Sink}. *//* w w w.j a v a2 s . c om*/ private void parse(com.tage.calcite.adapter.druid.QueryType queryType, InputStream in, Sink sink, List<String> fieldNames, List<Primitive> fieldTypes, Page page) { final JsonFactory factory = new JsonFactory(); final Row.RowBuilder rowBuilder = Row.newBuilder(fieldNames.size()); if (CalcitePrepareImpl.DEBUG) { try { final byte[] bytes = AvaticaUtils.readFullyToBytes(in); System.out.println("Response: " + new String(bytes)); in = new ByteArrayInputStream(bytes); } catch (IOException e) { throw Throwables.propagate(e); } } try (final JsonParser parser = factory.createParser(in)) { switch (queryType) { case TOP_N: if (parser.nextToken() == JsonToken.START_ARRAY && parser.nextToken() == JsonToken.START_OBJECT) { expectScalarField(parser, "timestamp"); if (parser.nextToken() == JsonToken.FIELD_NAME && parser.getCurrentName().equals("result") && parser.nextToken() == JsonToken.START_ARRAY) { while (parser.nextToken() == JsonToken.START_OBJECT) { // loop until token equal to "}" parseFields(fieldNames, fieldTypes, rowBuilder, parser); sink.send(rowBuilder.build()); rowBuilder.reset(); } } } break; case SELECT: if (parser.nextToken() == JsonToken.START_ARRAY && parser.nextToken() == JsonToken.START_OBJECT) { page.pagingIdentifier = null; page.offset = -1; expectScalarField(parser, "timestamp"); if (parser.nextToken() == JsonToken.FIELD_NAME && parser.getCurrentName().equals("result") && parser.nextToken() == JsonToken.START_OBJECT) { if (parser.nextToken() == JsonToken.FIELD_NAME && parser.getCurrentName().equals("pagingIdentifiers") && parser.nextToken() == JsonToken.START_OBJECT) { switch (parser.nextToken()) { case FIELD_NAME: page.pagingIdentifier = parser.getCurrentName(); if (parser.nextToken() == JsonToken.VALUE_NUMBER_INT) { page.offset = parser.getIntValue(); } expect(parser, JsonToken.END_OBJECT); break; case END_OBJECT: } } if (parser.nextToken() == JsonToken.FIELD_NAME && parser.getCurrentName().equals("events") && parser.nextToken() == JsonToken.START_ARRAY) { while (parser.nextToken() == JsonToken.START_OBJECT) { expectScalarField(parser, "segmentId"); expectScalarField(parser, "offset"); if (parser.nextToken() == JsonToken.FIELD_NAME && parser.getCurrentName().equals("event") && parser.nextToken() == JsonToken.START_OBJECT) { parseFields(fieldNames, fieldTypes, rowBuilder, parser); sink.send(rowBuilder.build()); rowBuilder.reset(); } expect(parser, JsonToken.END_OBJECT); } parser.nextToken(); } } } break; case GROUP_BY: if (parser.nextToken() == JsonToken.START_ARRAY) { while (parser.nextToken() == JsonToken.START_OBJECT) { expectScalarField(parser, "version"); expectScalarField(parser, "timestamp"); if (parser.nextToken() == JsonToken.FIELD_NAME && parser.getCurrentName().equals("event") && parser.nextToken() == JsonToken.START_OBJECT) { parseFields(fieldNames, fieldTypes, rowBuilder, parser); sink.send(rowBuilder.build()); rowBuilder.reset(); } expect(parser, JsonToken.END_OBJECT); } } } } catch (IOException | InterruptedException e) { throw Throwables.propagate(e); } }
From source file:com.marklogic.client.functionaltest.TestBulkReadWriteWithJacksonParserHandle.java
@Test public void testWriteMultipleJSONDocs() throws Exception { String docId[] = { "/a.json", "/b.json", "/c.json" }; String json1 = new String("{\"animal\":\"dog\", \"says\":\"woof\"}"); String json2 = new String("{\"animal\":\"cat\", \"says\":\"meow\"}"); String json3 = new String("{\"animal\":\"rat\", \"says\":\"keek\"}"); JsonFactory f = new JsonFactory(); JSONDocumentManager docMgr = client.newJSONDocumentManager(); docMgr.setMetadataCategories(Metadata.ALL); DocumentWriteSet writeset = docMgr.newWriteSet(); JacksonParserHandle jacksonParserHandle1 = new JacksonParserHandle(); JacksonParserHandle jacksonParserHandle2 = new JacksonParserHandle(); JacksonParserHandle jacksonParserHandle3 = new JacksonParserHandle(); jacksonParserHandle1.set(f.createParser(json1)); jacksonParserHandle2.set(f.createParser(json2)); jacksonParserHandle3.set(f.createParser(json3)); writeset.add(docId[0], jacksonParserHandle1); writeset.add(docId[1], jacksonParserHandle2); writeset.add(docId[2], jacksonParserHandle3); docMgr.write(writeset);//w ww .j a v a 2s . com //Using JacksonHandle to read back from database. JacksonHandle jacksonhandle = new JacksonHandle(); docMgr.read(docId[0], jacksonhandle); JSONAssert.assertEquals(json1, jacksonhandle.toString(), true); docMgr.read(docId[1], jacksonhandle); JSONAssert.assertEquals(json2, jacksonhandle.toString(), true); docMgr.read(docId[2], jacksonhandle); JSONAssert.assertEquals(json3, jacksonhandle.toString(), true); // Close handles. jacksonParserHandle1.close(); jacksonParserHandle2.close(); jacksonParserHandle3.close(); }
From source file:com.marklogic.client.functionaltest.TestBulkReadWriteWithJacksonParserHandle.java
@Test public void testWriteMultipleJSONDocsWithDefaultMetadata2() throws Exception { // Synthesize input content String doc1 = new String("{\"animal\": \"cat\", \"says\": \"meow\"}"); String doc2 = new String("{\"animal\": \"dog\", \"says\": \"bark\"}"); String doc3 = new String("{\"animal\": \"eagle\", \"says\": \"squeak\"}"); String doc4 = new String("{\"animal\": \"lion\", \"says\": \"roar\"}"); String doc5 = new String("{\"animal\": \"man\", \"says\": \"hello\"}"); // Synthesize input meta-data DocumentMetadataHandle defaultMetadata1 = new DocumentMetadataHandle().withQuality(1); DocumentMetadataHandle defaultMetadata2 = new DocumentMetadataHandle().withQuality(2); DocumentMetadataHandle docSpecificMetadata = new DocumentMetadataHandle() .withCollections("mySpecificCollection"); // Create and build up the batch JSONDocumentManager jdm = client.newJSONDocumentManager(); jdm.setMetadataCategories(Metadata.ALL); DocumentWriteSet batch = jdm.newWriteSet(); JsonFactory f = new JsonFactory(); JacksonParserHandle jacksonParserHandle1 = new JacksonParserHandle(); JacksonParserHandle jacksonParserHandle2 = new JacksonParserHandle(); JacksonParserHandle jacksonParserHandle3 = new JacksonParserHandle(); JacksonParserHandle jacksonParserHandle4 = new JacksonParserHandle(); JacksonParserHandle jacksonParserHandle5 = new JacksonParserHandle(); jacksonParserHandle1.set(f.createParser(doc1)); jacksonParserHandle2.set(f.createParser(doc2)); jacksonParserHandle3.set(f.createParser(doc3)); jacksonParserHandle4.set(f.createParser(doc4)); jacksonParserHandle5.set(f.createParser(doc5)); // use system default meta-data batch.add("doc1.json", jacksonParserHandle1); // using batch default meta-data batch.addDefault(defaultMetadata1);//w w w .j a v a 2 s . c o m batch.add("doc2.json", jacksonParserHandle2); // batch default meta-data batch.add("doc3.json", docSpecificMetadata, jacksonParserHandle3); batch.add("doc4.json", jacksonParserHandle4); // batch default meta-data // replace batch default meta-data with new meta-data batch.addDefault(defaultMetadata2); batch.add("doc5.json", jacksonParserHandle5); // batch default // Execute the write operation jdm.write(batch); DocumentPage page; DocumentRecord rec; // Check the results // Doc1 should have the system default quality of 0 page = jdm.read("doc1.json"); DocumentMetadataHandle mh = new DocumentMetadataHandle(); rec = page.next(); jdm.readMetadata(rec.getUri(), mh); validateDefaultMetadata(mh); assertEquals("default quality", 0, mh.getQuality()); // Doc2 should use the first batch default meta-data, with quality 1 page = jdm.read("doc2.json"); rec = page.next(); jdm.readMetadata(rec.getUri(), mh); System.out.print(mh.getCollections().isEmpty()); assertEquals("default quality", 1, mh.getQuality()); assertTrue("default collections reset", mh.getCollections().isEmpty()); // Doc3 should have the system default document quality (0) because // quality // was not included in the document-specific meta-data. It should be in // the // collection "mySpecificCollection", from the document-specific // meta-data. page = jdm.read("doc3.json"); rec = page.next(); jdm.readMetadata(rec.getUri(), mh); assertEquals("default quality", 0, mh.getQuality()); assertEquals("default collection must change", "[mySpecificCollection]", mh.getCollections().toString()); DocumentMetadataHandle doc3Metadata = jdm.readMetadata("doc3.json", new DocumentMetadataHandle()); System.out.println("doc3 quality: Expected=0, Actual=" + doc3Metadata.getPermissions()); System.out.print("doc3 collections: Expected: myCollection, Actual="); for (String collection : doc3Metadata.getCollections()) { System.out.print(collection + " "); } System.out.println(); // Doc 4 should also use the 1st batch default meta-data, with quality 1 page = jdm.read("doc4.json"); rec = page.next(); jdm.readMetadata(rec.getUri(), mh); assertEquals("default quality", 1, mh.getQuality()); assertTrue("default collections reset", mh.getCollections().isEmpty()); // Doc5 should use the 2nd batch default meta-data, with quality 2 page = jdm.read("doc5.json"); rec = page.next(); jdm.readMetadata(rec.getUri(), mh); assertEquals("default quality", 2, mh.getQuality()); // Close handles. jacksonParserHandle1.close(); jacksonParserHandle2.close(); jacksonParserHandle3.close(); jacksonParserHandle4.close(); jacksonParserHandle5.close(); }
From source file:com.marklogic.client.functionaltest.TestBulkReadWriteWithJacksonParserHandle.java
@Test public void testBulkSearchQBEWithJSONResponseFormat() throws IOException, ParserConfigurationException, SAXException, TransformerException { int count;/*from ww w. ja v a 2s. c o m*/ String docId[] = { "/a.json", "/b.json", "/c.json" }; String json1 = new String("{\"animal\":\"dog\", \"says\":\"woof\"}"); String json2 = new String("{\"animal\":\"cat\", \"says\":\"meow\"}"); String json3 = new String("{\"animal\":\"rat\", \"says\":\"keek\"}"); JsonFactory f = new JsonFactory(); JSONDocumentManager docMgr1 = client.newJSONDocumentManager(); docMgr1.setMetadataCategories(Metadata.ALL); DocumentWriteSet writeset = docMgr1.newWriteSet(); JacksonParserHandle jacksonParserHandle1 = new JacksonParserHandle(); JacksonParserHandle jacksonParserHandle2 = new JacksonParserHandle(); JacksonParserHandle jacksonParserHandle3 = new JacksonParserHandle(); jacksonParserHandle1.set(f.createParser(json1)); jacksonParserHandle2.set(f.createParser(json2)); jacksonParserHandle3.set(f.createParser(json3)); writeset.add(docId[0], jacksonParserHandle1); writeset.add(docId[1], jacksonParserHandle2); writeset.add(docId[2], jacksonParserHandle3); // Write to database. docMgr1.write(writeset); //Creating a xml document manager for bulk search XMLDocumentManager docMgr = client.newXMLDocumentManager(); //using QBE for query definition and set the search criteria QueryManager queryMgr = client.newQueryManager(); String queryAsString = "{\"$query\": { \"says\": {\"$word\":\"woof\",\"$exact\": false}}}"; RawQueryByExampleDefinition qd = queryMgr .newRawQueryByExampleDefinition(new StringHandle(queryAsString).withFormat(Format.JSON)); // set document manager level settings for search response docMgr.setPageLength(25); docMgr.setSearchView(QueryView.RESULTS); docMgr.setNonDocumentFormat(Format.JSON); // Search for documents where content has bar and get first result record, get search handle on it,Use DOMHandle to read results JacksonParserHandle sh = new JacksonParserHandle(); DocumentPage page; long pageNo = 1; do { count = 0; page = docMgr.search(qd, pageNo, sh); if (pageNo > 1) { assertFalse("Is this first Page", page.isFirstPage()); assertTrue("Is page has previous page ?", page.hasPreviousPage()); } while (page.hasNext()) { DocumentRecord rec = page.next(); rec.getFormat(); validateRecord(rec, Format.JSON); System.out.println(rec.getContent(new StringHandle()).get().toString()); count++; } // Add additional asserts once JacksonParserHandle is ready to handle bulk Search set. //assertTrue("Page start in results and on page",sh.get().get("start").asLong() == page.getStart()); assertEquals("document count", page.size(), count); // assertEquals("Page Number #",pageNo,page.getPageNumber()); pageNo = pageNo + page.getPageSize(); } while (!page.isLastPage() && page.hasContent()); assertEquals("page count is ", 1, page.getTotalPages()); assertFalse("Page has previous page ?", page.hasPreviousPage()); assertEquals("page size", 25, page.getPageSize()); assertEquals("document count", 1, page.getTotalSize()); // Close handles. jacksonParserHandle1.close(); jacksonParserHandle2.close(); jacksonParserHandle3.close(); }
From source file:msearch.io.MSFilmlisteLesen.java
private boolean filmlisteJsonEinlesen(File vonDatei, ListeFilme listeFilme) { boolean ret = false; BZip2CompressorInputStream bZip2CompressorInputStream; JsonFactory jsonF = new JsonFactory(); JsonParser jp = null;/*from w ww .j av a2s. c o m*/ JsonToken jsonToken; String sender = "", thema = ""; try { // ########################################################## // und jetzt die Liste einlesen, URL kann es jetzt schon nicht mehr sein! if (!vonDatei.exists()) { MSLog.fehlerMeldung(702030698, MSLog.FEHLER_ART_PROG, "MSearchIoXmlFilmlisteLesen.filmlisteLesen", "Datei existiert nicht: " + vonDatei.getName()); return false; } if (vonDatei.getName().endsWith(MSConst.FORMAT_XZ)) { XZInputStream xZInputStream = new XZInputStream(new FileInputStream(vonDatei)); jp = jsonF.createParser(new InputStreamReader(xZInputStream, MSConst.KODIERUNG_UTF)); } else if (vonDatei.getName().endsWith(MSConst.FORMAT_BZ2)) { bZip2CompressorInputStream = new BZip2CompressorInputStream(new FileInputStream(vonDatei)); jp = jsonF.createParser(new InputStreamReader(bZip2CompressorInputStream, MSConst.KODIERUNG_UTF)); } else if (vonDatei.getName().endsWith(MSConst.FORMAT_ZIP)) { ZipInputStream zipInputStream = new ZipInputStream(new FileInputStream(vonDatei)); zipInputStream.getNextEntry(); jp = jsonF.createParser(new InputStreamReader(zipInputStream, MSConst.KODIERUNG_UTF)); } else { jp = jsonF.createParser(vonDatei); // geht so am schnellsten } if (jp.nextToken() != JsonToken.START_OBJECT) { throw new IOException("Expected data to start with an Object"); } while ((jsonToken = jp.nextToken()) != null) { if (jsonToken == JsonToken.END_OBJECT) { break; } if (jp.isExpectedStartArrayToken()) { for (int k = 0; k < ListeFilme.MAX_ELEM; ++k) { listeFilme.metaDaten[k] = jp.nextTextValue(); } break; } } while ((jsonToken = jp.nextToken()) != null) { if (jsonToken == JsonToken.END_OBJECT) { break; } if (jp.isExpectedStartArrayToken()) { // sind nur die Feldbeschreibungen, brauch mer nicht jp.nextToken(); break; } } while ((jsonToken = jp.nextToken()) != null) { if (jsonToken == JsonToken.END_OBJECT) { break; } if (jp.isExpectedStartArrayToken()) { DatenFilm datenFilm = new DatenFilm(); for (int i = 0; i < DatenFilm.COLUMN_NAMES_JSON.length; ++i) { datenFilm.arr[DatenFilm.COLUMN_NAMES_JSON[i]] = jp.nextTextValue(); /// fr die Entwicklungszeit if (datenFilm.arr[DatenFilm.COLUMN_NAMES_JSON[i]] == null) { datenFilm.arr[DatenFilm.COLUMN_NAMES_JSON[i]] = ""; } } if (datenFilm.arr[DatenFilm.FILM_SENDER_NR].equals("")) { datenFilm.arr[DatenFilm.FILM_SENDER_NR] = sender; } else { sender = datenFilm.arr[DatenFilm.FILM_SENDER_NR]; } if (datenFilm.arr[DatenFilm.FILM_THEMA_NR].equals("")) { datenFilm.arr[DatenFilm.FILM_THEMA_NR] = thema; } else { thema = datenFilm.arr[DatenFilm.FILM_THEMA_NR]; } listeFilme.importFilmliste(datenFilm); } } jp.close(); ret = true; } catch (Exception ex) { MSLog.fehlerMeldung(468956200, MSLog.FEHLER_ART_PROG, "MSearchIoXmlFilmlisteLesen.filmlisteLesen", ex, "von: " + vonDatei.getName()); } return ret; }