List of usage examples for com.fasterxml.jackson.core JsonFactory JsonFactory
public JsonFactory()
From source file:org.apache.drill.exec.store.parquet.metadata.Metadata.java
private void writeFile(ParquetTableMetadataDirs parquetTableMetadataDirs, Path p, FileSystem fs) throws IOException { JsonFactory jsonFactory = new JsonFactory(); jsonFactory.configure(Feature.AUTO_CLOSE_TARGET, false); jsonFactory.configure(JsonParser.Feature.AUTO_CLOSE_SOURCE, false); ObjectMapper mapper = new ObjectMapper(jsonFactory); SimpleModule module = new SimpleModule(); mapper.registerModule(module);//from w w w. j a va 2 s . c o m FSDataOutputStream os = fs.create(p); mapper.writerWithDefaultPrettyPrinter().writeValue(os, parquetTableMetadataDirs); os.flush(); os.close(); }
From source file:com.comcast.cdn.traffic_control.traffic_router.core.external.RouterTest.java
@Test public void itDoesUseLocationFormatResponse() throws IOException, InterruptedException { HttpGet httpGet = new HttpGet( "http://localhost:" + routerHttpPort + "/stuff?fakeClientIpAddress=12.34.56.78&format=json"); httpGet.addHeader("Host", "tr." + deliveryServiceId + ".bar"); CloseableHttpResponse response = null; try {//from w w w. j ava 2 s . com response = httpClient.execute(httpGet); assertThat(response.getStatusLine().getStatusCode(), equalTo(200)); HttpEntity entity = response.getEntity(); ObjectMapper objectMapper = new ObjectMapper(new JsonFactory()); assertThat(entity.getContent(), not(nullValue())); System.out.println(entity.getContent()); JsonNode json = objectMapper.readTree(entity.getContent()); System.out.println(json); assertThat(json.has("location"), equalTo(true)); assertThat(json.get("location").asText(), isIn(validLocations)); assertThat(json.get("location").asText(), Matchers.startsWith("http://")); } finally { if (response != null) response.close(); } }
From source file:org.apache.cxf.cwiki.SiteExporter.java
private String renderPage(AbstractPage p) throws ParserConfigurationException, IOException { ContentResource content = getContentResource(); InputStream ins = content.getContentById(p.getId(), null, null, "body.export_view") .readEntity(InputStream.class); JsonParser parser = new JsonFactory().createParser(ins); JsonToken tok = parser.nextToken();//from ww w. j a va2 s .c o m boolean inExportView = false; while (tok != null) { if (tok == JsonToken.FIELD_NAME) { if (parser.getCurrentName().equals("export_view")) { inExportView = true; } } else if (tok == JsonToken.VALUE_STRING && inExportView && parser.getCurrentName().equals("value")) { return "<div id='ConfluenceContent'>" + parser.getText() + "</div>"; } tok = parser.nextToken(); } System.out.println("No text for page \"" + p.getTitle() + "\""); return ""; }
From source file:edu.cmu.cs.lti.discoursedb.github.converter.GithubConverterService.java
public void addCrossrefs(String refinfo, String source, Discourse discourse, User actor) { if (refinfo.length() == 0) { return;// w w w.j av a 2s . co m } try { JsonNode node = new ObjectMapper().readValue(new JsonFactory().createParser(refinfo), JsonNode.class); for (JsonNode reference : node) { JsonNode parts = reference.get("parts"); String owner = parts.get(0).toString(); String project = parts.get(1).toString(); String issueNumString = parts.get(2).toString().replaceAll("[^0-9]+", ""); String rev = parts.get(3).toString(); long issuenum = Long.parseLong(issueNumString); String issueIdentifier = GithubConverterUtil.standardIssueIdentifier(owner + "/" + project, issuenum); DiscoursePart issueDP = getDiscoursePart(discourse, issueIdentifier, DiscoursePartTypes.GITHUB_ISSUE); DiscoursePartInteraction dpi = userService.createDiscoursePartInteraction(actor, issueDP, DiscoursePartInteractionTypes.REFER); AnnotationInstance crossref = annotationService.createTypedAnnotation("CrossrefFrom"); annotationService.addAnnotation(dpi, crossref); annotationService.addFeature(crossref, annotationService.createTypedFeature(source, "Source")); } } catch (JsonProcessingException je) { logger.error("Could not parse " + refinfo + " from " + source + ": " + je.getMessage()); } catch (IOException e) { logger.error("Could not parse " + refinfo + " from " + source + ": " + e.getMessage()); // TODO Auto-generated catch block e.printStackTrace(); } }
From source file:org.hexlogic.model.DockerNode.java
@VsoMethod(showInApi = true, name = "pullImage", description = "Pull the image matching the given string from the docker hub repository, saving it on the docker host.") public String pullImage(String imageName) throws Exception { log.debug("Pulling image '" + imageName + "'..."); @SuppressWarnings("rawtypes") MappingIterator<Map> it = null; try {/*from www .j a va2 s . co m*/ configureNode(); DockerClient dockerClient = DockerClientBuilder.getInstance(config).build(); log.debug("Starting pull operation..."); /* * We will check the final result by comparing the initial image id, which is the first ID provided by the stream such as: * * {status=Pulling image (latest) from dockerfile/nodejs, progressDetail={}, id=406eb4a4dcad} * * to the image id of the last entity which owns id AND status which will look something like: * {status=Download complete, progressDetail={}, id=406eb4a4dcad} * * If both IDs match, we know that the latest layer is the same as the requested image layer. * So the next step is to compare the download status of that layer */ String firstId = null; String lastId = ""; String lastStatus = "undefined"; /* * In addition to the download status of the layer, we provide additional information about how the process went by * returning information to the user using the last entity which has no id and only a status, which looks like this: * {status=Status: Image is up to date for dockerfile/nodejs} * or * {status=Status: Downloaded newer image for dockerfile/nodejs} * or * {status=Repository dockerfile/nodejs already being pulled by another client. Waiting.} */ String finalStatus = "undefined"; for (it = new ObjectMapper().readValues( new JsonFactory().createJsonParser(dockerClient.pullImageCmd(imageName).exec()), Map.class); it .hasNext();) { Map<?, ?> element = it.next(); String id = ""; String status = ""; String progress = ""; // info OUTPUT // log.debug("info: " + element); try { id = element.get("id").toString(); } catch (NullPointerException e) {/* catch exception if key was not found */ } try { status = element.get("status").toString(); } catch (NullPointerException e) {/* catch exception if key was not found */ } try { progress = element.get("progress").toString(); } catch (NullPointerException e) {/* catch exception if key was not found */ } // if the key was found and we got some status if (!id.isEmpty() && !status.isEmpty()) { // remember the first id of the output stream, which is the id of the image we want to pull if (firstId == null) { log.debug("Remembering first id: " + id); firstId = id; } // if the same layer is returned multiple times in a row, don't log everything but just the progress if (id.equals(lastId)) { lastId = id; lastStatus = status; if (!progress.isEmpty()) { log.debug("Progress: " + progress); } } else { lastId = id; log.debug("Image '" + id + "' status is: " + status + "."); if (!progress.isEmpty()) { log.debug("Progress: " + progress); } } } if (!status.isEmpty()) { finalStatus = status; } } // TODO find a more robust way to handle downloadStatus and finalStatus String downloadStatus = "undefined"; if (lastId.equals(firstId)) { log.debug("Last download layer id does match the requested image id: " + firstId); if (StringUtils.containsIgnoreCase(lastStatus, "Download complete")) { downloadStatus = "successed"; log.debug("The requested layer was downloaded successfuly."); } else { downloadStatus = "failed"; log.error("The requested layer failed to download."); // throw exception in order for the workflow to fail throw new IllegalStateException("The requested layer failed to download."); } } // reload images from docker node this.reloadImages(); // update inventory - another way to do this would be to update our ArrayList and call notifyElementDeleted on the image object notificationHandler.notifyElementInvalidate(toRef()); log.debug("Pull operation " + downloadStatus + ". " + finalStatus + "."); return "Pull operation " + downloadStatus + ". " + finalStatus + "."; } catch (InternalServerErrorException e) { // image dosn't exist log.error("Error: the image was not found."); // Throw error detail message so vCO can display it throw new Exception("Error: the image was not found."); } catch (Exception e) { final StringWriter sw = new StringWriter(); final PrintWriter pw = new PrintWriter(sw, true); e.printStackTrace(pw); log.error("Error while pulling image: " + sw.getBuffer().toString()); // Throw error detail message so vCO can display it throw new Exception("Error while pulling image: " + sw.getBuffer().toString()); } finally { if (it != null) { log.debug("Closeing pullImage stream..."); it.close(); log.debug("Closed pullImage stream."); } } }
From source file:org.jmxtrans.embedded.output.CopperEggWriter.java
public String write_tostring(JsonNode json) { ObjectMapper mapper = new ObjectMapper(); StringWriter out = new StringWriter(); try {//from ww w . j a v a 2 s . com JsonFactory fac = new JsonFactory(); JsonGenerator gen = fac.createJsonGenerator(out); // Now write: mapper.writeTree(gen, json); gen.flush(); gen.close(); return out.toString(); } catch (Exception e) { exceptionCounter.incrementAndGet(); logger.warn("Exception in write_tostring: " + e); } return (null); }
From source file:org.canova.api.conf.Configuration.java
/** * Writes out all the parameters and their properties (final and resource) to * the given {@link Writer}/*from ww w . j a v a 2 s .c om*/ * The format of the output would be * { "properties" : [ {key1,value1,key1.isFinal,key1.resource}, {key2,value2, * key2.isFinal,key2.resource}... ] } * It does not output the parameters of the configuration object which is * loaded from an input stream. * @param out the Writer to write to * @throws IOException */ public static void dumpConfiguration(Configuration conf, Writer out) throws IOException { Configuration config = new Configuration(conf, true); config.reloadConfiguration(); JsonFactory dumpFactory = new JsonFactory(); JsonGenerator dumpGenerator = dumpFactory.createGenerator(out); dumpGenerator.writeStartObject(); dumpGenerator.writeFieldName("properties"); dumpGenerator.writeStartArray(); dumpGenerator.flush(); for (Map.Entry<Object, Object> item : config.getProps().entrySet()) { dumpGenerator.writeStartObject(); dumpGenerator.writeStringField("key", (String) item.getKey()); dumpGenerator.writeStringField("value", config.get((String) item.getKey())); dumpGenerator.writeBooleanField("isFinal", config.finalParameters.contains(item.getKey())); dumpGenerator.writeStringField("resource", config.updatingResource.get(item.getKey())); dumpGenerator.writeEndObject(); } dumpGenerator.writeEndArray(); dumpGenerator.writeEndObject(); dumpGenerator.flush(); }
From source file:com.marklogic.client.functionaltest.BasicJavaClientREST.java
/** * Get the expected JSON document//from ww w.ja v a 2 s.c o m * @param filename * @return * @throws JsonParseException * @throws IOException */ public JsonNode expectedJSONDocument(String filename) throws JsonParseException, IOException { // get json document for expected result ObjectMapper mapper = new ObjectMapper(); JsonFactory jfactory = new JsonFactory(); JsonParser jParser = jfactory .createJsonParser(new File("src/test/java/com/marklogic/client/functionaltest/data/" + filename)); JsonNode expectedDoc = mapper.readTree(jParser); return expectedDoc; }
From source file:com.marklogic.client.functionaltest.BasicJavaClientREST.java
/** * Get the expected JSON query option/*from w ww .j ava 2 s . c om*/ * @param filename * @return * @throws JsonParseException * @throws IOException */ public JsonNode expectedJSONQueryOption(String filename) throws JsonParseException, IOException { // get json document for expected result ObjectMapper mapper = new ObjectMapper(); JsonFactory jfactory = new JsonFactory(); JsonParser jParser = jfactory.createJsonParser( new File("src/test/java/com/marklogic/client/functionaltest/queryoptions/" + filename)); JsonNode expectedDoc = mapper.readTree(jParser); return expectedDoc; }
From source file:com.marklogic.client.functionaltest.TestBiTemporal.java
@Test // Test bitemporal create, update and delete works with a JSON document while passing // system time. The temporal collection needs to be enabled for lsqt and we have enabled // automation for lsqt (lsqt will be advanced every second and system time will be set with // a lag of 1 second) public void testSystemTime() throws Exception { System.out.println("Inside testSystemTime"); ConnectedRESTQA.updateTemporalCollectionForLSQT(dbName, temporalLsqtCollectionName, true); String docId = "javaSingleJSONDoc.json"; Calendar firstInsertTime = DatatypeConverter.parseDateTime("2010-01-01T00:00:01"); insertJSONSingleDocument(temporalLsqtCollectionName, docId, null, null, firstInsertTime); // Verify that the document was inserted JSONDocumentManager docMgr = readerClient.newJSONDocumentManager(); JacksonDatabindHandle<ObjectNode> recordHandle = new JacksonDatabindHandle<ObjectNode>(ObjectNode.class); DocumentMetadataHandle metadataHandle = new DocumentMetadataHandle(); docMgr.read(docId, metadataHandle, recordHandle); DocumentPage readResults = docMgr.read(docId); System.out.println("Number of results = " + readResults.size()); assertEquals("Wrong number of results", 1, readResults.size()); DocumentRecord record = readResults.next(); System.out.println("URI after insert = " + record.getUri()); assertEquals("Document uri wrong after insert", docId, record.getUri()); System.out.println("Content = " + recordHandle.toString()); // Make sure System start time was what was set ("2010-01-01T00:00:01") if (record.getFormat() != Format.JSON) { assertFalse("Invalid document format: " + record.getFormat(), true); } else {/*from w ww. j av a 2 s. c om*/ JsonFactory factory = new JsonFactory(); ObjectMapper mapper = new ObjectMapper(factory); TypeReference<HashMap<String, Object>> typeRef = new TypeReference<HashMap<String, Object>>() { }; HashMap<String, Object> docObject = mapper.readValue(recordHandle.toString(), typeRef); @SuppressWarnings("unchecked") HashMap<String, Object> validNode = (HashMap<String, Object>) (docObject.get(systemNodeName)); String systemStartDate = (String) validNode.get(systemStartERIName); String systemEndDate = (String) validNode.get(systemEndERIName); System.out.println("systemStartDate = " + systemStartDate); System.out.println("systemEndDate = " + systemEndDate); assertTrue("System start date check failed", (systemStartDate.contains("2010-01-01T00:00:01"))); assertTrue("System end date check failed", (systemEndDate.contains("9999-12-31T23:59:59"))); // Validate collections Iterator<String> resCollections = metadataHandle.getCollections().iterator(); while (resCollections.hasNext()) { String collection = resCollections.next(); System.out.println("Collection = " + collection); if (!collection.equals(docId) && !collection.equals(insertCollectionName) && !collection.equals(temporalLsqtCollectionName) && !collection.equals(latestCollectionName)) { assertFalse("Collection not what is expected: " + collection, true); } } // Validate permissions DocumentPermissions permissions = metadataHandle.getPermissions(); System.out.println("Permissions: " + permissions); String actualPermissions = getDocumentPermissionsString(permissions); System.out.println("actualPermissions: " + actualPermissions); assertTrue("Document permissions difference in size value", actualPermissions.contains("size:3")); assertTrue("Document permissions difference in rest-reader permission", actualPermissions.contains("rest-reader:[READ]")); assertTrue("Document permissions difference in rest-writer permission", actualPermissions.contains("rest-writer:[UPDATE]")); assertTrue("Document permissions difference in app-user permission", (actualPermissions.contains("app-user:[") && actualPermissions.contains("READ") && actualPermissions.contains("UPDATE") && actualPermissions.contains("EXECUTE"))); // Validate quality int quality = metadataHandle.getQuality(); System.out.println("Quality: " + quality); assertEquals(quality, 11); validateMetadata(metadataHandle); } // ============================================================================= // Check update works // ============================================================================= Calendar updateTime = DatatypeConverter.parseDateTime("2011-01-01T00:00:01"); updateJSONSingleDocument(temporalLsqtCollectionName, docId, null, updateTime); // Verify that the document was updated // Make sure there is 1 document in latest collection QueryManager queryMgr = readerClient.newQueryManager(); StructuredQueryBuilder sqb = queryMgr.newStructuredQueryBuilder(); StructuredQueryDefinition termQuery = sqb.collection(latestCollectionName); long start = 1; DocumentPage termQueryResults = docMgr.search(termQuery, start); System.out.println("Number of results = " + termQueryResults.getTotalSize()); assertEquals("Wrong number of results", 1, termQueryResults.getTotalSize()); // Document URIs in latest collection must be the same as the one as the // original document while (termQueryResults.hasNext()) { record = termQueryResults.next(); String uri = record.getUri(); System.out.println("URI = " + uri); if (!uri.equals(docId)) { assertFalse("URIs are not what is expected", true); } } // Make sure there are 4 documents in jsonDocId collection queryMgr = readerClient.newQueryManager(); sqb = queryMgr.newStructuredQueryBuilder(); termQuery = sqb.collection(docId); start = 1; termQueryResults = docMgr.search(termQuery, start); System.out.println("Number of results = " + termQueryResults.getTotalSize()); assertEquals("Wrong number of results", 4, termQueryResults.getTotalSize()); // Make sure there are 4 documents in temporal collection queryMgr = readerClient.newQueryManager(); sqb = queryMgr.newStructuredQueryBuilder(); termQuery = sqb.collection(temporalLsqtCollectionName); start = 1; termQueryResults = docMgr.search(termQuery, start); System.out.println("Number of results = " + termQueryResults.getTotalSize()); assertEquals("Wrong number of results", 4, termQueryResults.getTotalSize()); // Make sure there are 4 documents in total. Use string search for this queryMgr = readerClient.newQueryManager(); StringQueryDefinition stringQD = queryMgr.newStringDefinition(); stringQD.setCriteria(""); start = 1; docMgr.setMetadataCategories(Metadata.ALL); termQueryResults = docMgr.search(stringQD, start); System.out.println("Number of results = " + termQueryResults.getTotalSize()); assertEquals("Wrong number of results", 4, termQueryResults.getTotalSize()); while (termQueryResults.hasNext()) { record = termQueryResults.next(); System.out.println("URI = " + record.getUri()); metadataHandle = new DocumentMetadataHandle(); record.getMetadata(metadataHandle); if (record.getFormat() != Format.JSON) { assertFalse("Format is not JSON: " + Format.JSON, true); } else { // Make sure that system and valid times are what is expected recordHandle = new JacksonDatabindHandle<ObjectNode>(ObjectNode.class); record.getContent(recordHandle); System.out.println("Content = " + recordHandle.toString()); JsonFactory factory = new JsonFactory(); ObjectMapper mapper = new ObjectMapper(factory); TypeReference<HashMap<String, Object>> typeRef = new TypeReference<HashMap<String, Object>>() { }; HashMap<String, Object> docObject = mapper.readValue(recordHandle.toString(), typeRef); @SuppressWarnings("unchecked") HashMap<String, Object> systemNode = (HashMap<String, Object>) (docObject.get(systemNodeName)); String systemStartDate = (String) systemNode.get(systemStartERIName); String systemEndDate = (String) systemNode.get(systemEndERIName); System.out.println("systemStartDate = " + systemStartDate); System.out.println("systemEndDate = " + systemEndDate); @SuppressWarnings("unchecked") HashMap<String, Object> validNode = (HashMap<String, Object>) (docObject.get(validNodeName)); String validStartDate = (String) validNode.get(validStartERIName); String validEndDate = (String) validNode.get(validEndERIName); System.out.println("validStartDate = " + validStartDate); System.out.println("validEndDate = " + validEndDate); // Permissions DocumentPermissions permissions = metadataHandle.getPermissions(); System.out.println("Permissions: " + permissions); String actualPermissions = getDocumentPermissionsString(permissions); System.out.println("actualPermissions: " + actualPermissions); int quality = metadataHandle.getQuality(); System.out.println("Quality: " + quality); if (validStartDate.contains("2003-01-01T00:00:00") && validEndDate.contains("2008-12-31T23:59:59")) { assertTrue("System start date check failed", (systemStartDate.contains("2011-01-01T00:00:01"))); assertTrue("System start date check failed", (systemEndDate.contains("9999-12-31T23:59:59"))); Iterator<String> resCollections = metadataHandle.getCollections().iterator(); while (resCollections.hasNext()) { String collection = resCollections.next(); System.out.println("Collection = " + collection); if (!collection.equals(docId) && !collection.equals(updateCollectionName) && !collection.equals(temporalLsqtCollectionName)) { assertFalse("Collection not what is expected: " + collection, true); } } assertTrue("Properties should be empty", metadataHandle.getProperties().isEmpty()); assertTrue("Document permissions difference in size value", actualPermissions.contains("size:3")); assertTrue("Document permissions difference in rest-reader permission", actualPermissions.contains("rest-reader:[READ]")); assertTrue("Document permissions difference in rest-writer permission", actualPermissions.contains("rest-writer:[UPDATE]")); assertTrue("Document permissions difference in app-user permission", (actualPermissions.contains("app-user:[") && actualPermissions.contains("READ") && actualPermissions.contains("UPDATE"))); assertFalse("Document permissions difference in app-user permission", actualPermissions.contains("EXECUTE")); assertEquals(quality, 99); } if (validStartDate.contains("2001-01-01T00:00:00") && validEndDate.contains("2003-01-01T00:00:00")) { assertTrue("System start date check failed", (systemStartDate.contains("2011-01-01T00:00:01"))); assertTrue("System start date check failed", (systemEndDate.contains("9999-12-31T23:59:59"))); Iterator<String> resCollections = metadataHandle.getCollections().iterator(); while (resCollections.hasNext()) { String collection = resCollections.next(); System.out.println("Collection = " + collection); if (!collection.equals(docId) && !collection.equals(insertCollectionName) && !collection.equals(temporalLsqtCollectionName)) { assertFalse("Collection not what is expected: " + collection, true); } } assertTrue("Properties should be empty", metadataHandle.getProperties().isEmpty()); assertTrue("Document permissions difference in size value", actualPermissions.contains("size:3")); assertTrue("Document permissions difference in rest-reader permission", actualPermissions.contains("rest-reader:[READ]")); assertTrue("Document permissions difference in rest-writer permission", actualPermissions.contains("rest-writer:[UPDATE]")); assertTrue("Document permissions difference in app-user permission", (actualPermissions.contains("app-user:[") && actualPermissions.contains("READ") && actualPermissions.contains("UPDATE") && actualPermissions.contains("EXECUTE"))); assertEquals(quality, 11); } if (validStartDate.contains("2008-12-31T23:59:59") && validEndDate.contains("2011-12-31T23:59:59")) { // This is the latest document assertTrue("System start date check failed", (systemStartDate.contains("2011-01-01T00:00:01"))); assertTrue("System start date check failed", (systemEndDate.contains("9999-12-31T23:59:59"))); assertTrue("URI should be the doc uri ", record.getUri().equals(docId)); Iterator<String> resCollections = metadataHandle.getCollections().iterator(); while (resCollections.hasNext()) { String collection = resCollections.next(); System.out.println("Collection = " + collection); if (!collection.equals(docId) && !collection.equals(insertCollectionName) && !collection.equals(temporalLsqtCollectionName) && !collection.equals(latestCollectionName)) { assertFalse("Collection not what is expected: " + collection, true); } } assertTrue("Document permissions difference in size value", actualPermissions.contains("size:3")); assertTrue("Document permissions difference in rest-reader permission", actualPermissions.contains("rest-reader:[READ]")); assertTrue("Document permissions difference in rest-writer permission", actualPermissions.contains("rest-writer:[UPDATE]")); assertTrue("Document permissions difference in app-user permission", (actualPermissions.contains("app-user:[") && actualPermissions.contains("READ") && actualPermissions.contains("UPDATE") && actualPermissions.contains("EXECUTE"))); assertEquals(quality, 11); validateMetadata(metadataHandle); } if (validStartDate.contains("2001-01-01T00:00:00") && validEndDate.contains("2011-12-31T23:59:59")) { assertTrue("System start date check failed", (systemStartDate.contains("2010-01-01T00:00:01"))); assertTrue("System start date check failed", (systemEndDate.contains("2011-01-01T00:00:01"))); Iterator<String> resCollections = metadataHandle.getCollections().iterator(); while (resCollections.hasNext()) { String collection = resCollections.next(); System.out.println("Collection = " + collection); if (!collection.equals(docId) && !collection.equals(insertCollectionName) && !collection.equals(temporalLsqtCollectionName)) { assertFalse("Collection not what is expected: " + collection, true); } } assertTrue("Properties should be empty", metadataHandle.getProperties().isEmpty()); assertTrue("Document permissions difference in size value", actualPermissions.contains("size:3")); assertTrue("Document permissions difference in rest-reader permission", actualPermissions.contains("rest-reader:[READ]")); assertTrue("Document permissions difference in rest-writer permission", actualPermissions.contains("rest-writer:[UPDATE]")); assertTrue("Document permissions difference in app-user permission", (actualPermissions.contains("app-user:[") && actualPermissions.contains("READ") && actualPermissions.contains("UPDATE") && actualPermissions.contains("EXECUTE"))); assertEquals(quality, 11); } } } // ============================================================================= // Check delete works // ============================================================================= // Delete one of the document Calendar deleteTime = DatatypeConverter.parseDateTime("2012-01-01T00:00:01"); deleteJSONSingleDocument(temporalLsqtCollectionName, docId, null, deleteTime); // Make sure there are still 4 documents in docId collection queryMgr = readerClient.newQueryManager(); sqb = queryMgr.newStructuredQueryBuilder(); termQuery = sqb.collection(docId); start = 1; termQueryResults = docMgr.search(termQuery, start); System.out.println("Number of results = " + termQueryResults.getTotalSize()); assertEquals("Wrong number of results", 4, termQueryResults.getTotalSize()); // Make sure there is one document with docId uri docMgr = readerClient.newJSONDocumentManager(); readResults = docMgr.read(docId); System.out.println("Number of results = " + readResults.size()); assertEquals("Wrong number of results", 1, readResults.size()); // Make sure there are no documents in latest collection queryMgr = readerClient.newQueryManager(); sqb = queryMgr.newStructuredQueryBuilder(); termQuery = sqb.collection(latestCollectionName); start = 1; termQueryResults = docMgr.search(termQuery, start); System.out.println("Number of results = " + termQueryResults.getTotalSize()); assertEquals("Wrong number of results", 0, termQueryResults.getTotalSize()); // Make sure there are 4 documents in temporal collection queryMgr = readerClient.newQueryManager(); sqb = queryMgr.newStructuredQueryBuilder(); termQuery = sqb.collection(temporalLsqtCollectionName); start = 1; docMgr.setMetadataCategories(Metadata.ALL); termQueryResults = docMgr.search(termQuery, start); System.out.println("Number of results = " + termQueryResults.getTotalSize()); assertEquals("Wrong number of results", 4, termQueryResults.getTotalSize()); while (termQueryResults.hasNext()) { record = termQueryResults.next(); System.out.println("URI = " + record.getUri()); metadataHandle = new DocumentMetadataHandle(); record.getMetadata(metadataHandle); if (record.getFormat() != Format.JSON) { assertFalse("Format is not JSON: " + Format.JSON, true); } else { // Make sure that system and valid times are what is expected recordHandle = new JacksonDatabindHandle<ObjectNode>(ObjectNode.class); record.getContent(recordHandle); System.out.println("Content = " + recordHandle.toString()); JsonFactory factory = new JsonFactory(); ObjectMapper mapper = new ObjectMapper(factory); TypeReference<HashMap<String, Object>> typeRef = new TypeReference<HashMap<String, Object>>() { }; HashMap<String, Object> docObject = mapper.readValue(recordHandle.toString(), typeRef); @SuppressWarnings("unchecked") HashMap<String, Object> systemNode = (HashMap<String, Object>) (docObject.get(systemNodeName)); String systemStartDate = (String) systemNode.get(systemStartERIName); String systemEndDate = (String) systemNode.get(systemEndERIName); System.out.println("systemStartDate = " + systemStartDate); System.out.println("systemEndDate = " + systemEndDate); @SuppressWarnings("unchecked") HashMap<String, Object> validNode = (HashMap<String, Object>) (docObject.get(validNodeName)); String validStartDate = (String) validNode.get(validStartERIName); String validEndDate = (String) validNode.get(validEndERIName); System.out.println("validStartDate = " + validStartDate); System.out.println("validEndDate = " + validEndDate); // Permissions DocumentPermissions permissions = metadataHandle.getPermissions(); System.out.println("Permissions: " + permissions); String actualPermissions = getDocumentPermissionsString(permissions); System.out.println("actualPermissions: " + actualPermissions); int quality = metadataHandle.getQuality(); System.out.println("Quality: " + quality); if (validStartDate.contains("2003-01-01T00:00:00") && validEndDate.contains("2008-12-31T23:59:59")) { assertTrue("System start date check failed", (systemStartDate.contains("2011-01-01T00:00:01"))); assertTrue("System start date check failed", (systemEndDate.contains("2012-01-01T00:00:01"))); Iterator<String> resCollections = metadataHandle.getCollections().iterator(); while (resCollections.hasNext()) { String collection = resCollections.next(); System.out.println("Collection = " + collection); if (!collection.equals(docId) && !collection.equals(updateCollectionName) && !collection.equals(temporalLsqtCollectionName)) { assertFalse("Collection not what is expected: " + collection, true); } } assertTrue("Properties should be empty", metadataHandle.getProperties().isEmpty()); assertTrue("Document permissions difference in size value", actualPermissions.contains("size:3")); assertTrue("Document permissions difference in rest-reader permission", actualPermissions.contains("rest-reader:[READ]")); assertTrue("Document permissions difference in rest-writer permission", actualPermissions.contains("rest-writer:[UPDATE]")); assertTrue("Document permissions difference in app-user permission", (actualPermissions.contains("app-user:[") && actualPermissions.contains("READ") && actualPermissions.contains("UPDATE"))); assertFalse("Document permissions difference in app-user permission", actualPermissions.contains("EXECUTE")); assertEquals(quality, 99); } if (validStartDate.contains("2001-01-01T00:00:00") && validEndDate.contains("2003-01-01T00:00:00")) { assertTrue("System start date check failed", (systemStartDate.contains("2011-01-01T00:00:01"))); assertTrue("System start date check failed", (systemEndDate.contains("2012-01-01T00:00:01"))); Iterator<String> resCollections = metadataHandle.getCollections().iterator(); while (resCollections.hasNext()) { String collection = resCollections.next(); System.out.println("Collection = " + collection); if (!collection.equals(docId) && !collection.equals(insertCollectionName) && !collection.equals(temporalLsqtCollectionName)) { assertFalse("Collection not what is expected: " + collection, true); } } assertTrue("Properties should be empty", metadataHandle.getProperties().isEmpty()); assertTrue("Document permissions difference in size value", actualPermissions.contains("size:3")); assertTrue("Document permissions difference in rest-reader permission", actualPermissions.contains("rest-reader:[READ]")); assertTrue("Document permissions difference in rest-writer permission", actualPermissions.contains("rest-writer:[UPDATE]")); assertTrue("Document permissions difference in app-user permission", (actualPermissions.contains("app-user:[") && actualPermissions.contains("READ") && actualPermissions.contains("UPDATE") && actualPermissions.contains("EXECUTE"))); assertEquals(quality, 11); } if (validStartDate.contains("2008-12-31T23:59:59") && validEndDate.contains("2011-12-31T23:59:59")) { assertTrue("System start date check failed", (systemStartDate.contains("2011-01-01T00:00:01"))); assertTrue("System start date check failed", (systemEndDate.contains("2012-01-01T00:00:01"))); assertTrue("URI should be the doc uri ", record.getUri().equals(docId)); // Document should not be in latest collection Iterator<String> resCollections = metadataHandle.getCollections().iterator(); while (resCollections.hasNext()) { String collection = resCollections.next(); System.out.println("Collection = " + collection); if (!collection.equals(docId) && !collection.equals(insertCollectionName) && !collection.equals(temporalLsqtCollectionName)) { assertFalse("Collection not what is expected: " + collection, true); } } assertTrue("Document permissions difference in size value", actualPermissions.contains("size:3")); assertTrue("Document permissions difference in rest-reader permission", actualPermissions.contains("rest-reader:[READ]")); assertTrue("Document permissions difference in rest-writer permission", actualPermissions.contains("rest-writer:[UPDATE]")); assertTrue("Document permissions difference in app-user permission", (actualPermissions.contains("app-user:[") && actualPermissions.contains("READ") && actualPermissions.contains("UPDATE") && actualPermissions.contains("EXECUTE"))); assertEquals(quality, 11); validateMetadata(metadataHandle); } if (validStartDate.contains("2001-01-01T00:00:00") && validEndDate.contains("2011-12-31T23:59:59")) { assertTrue("System start date check failed", (systemStartDate.contains("2010-01-01T00:00:01"))); assertTrue("System start date check failed", (systemEndDate.contains("2011-01-01T00:00:01"))); Iterator<String> resCollections = metadataHandle.getCollections().iterator(); while (resCollections.hasNext()) { String collection = resCollections.next(); System.out.println("Collection = " + collection); if (!collection.equals(docId) && !collection.equals(insertCollectionName) && !collection.equals(temporalLsqtCollectionName)) { assertFalse("Collection not what is expected: " + collection, true); } } assertTrue("Properties should be empty", metadataHandle.getProperties().isEmpty()); assertTrue("Document permissions difference in size value", actualPermissions.contains("size:3")); assertTrue("Document permissions difference in rest-reader permission", actualPermissions.contains("rest-reader:[READ]")); assertTrue("Document permissions difference in rest-writer permission", actualPermissions.contains("rest-writer:[UPDATE]")); assertTrue("Document permissions difference in app-user permission", (actualPermissions.contains("app-user:[") && actualPermissions.contains("READ") && actualPermissions.contains("UPDATE") && actualPermissions.contains("EXECUTE"))); assertEquals(quality, 11); } } } // Make sure there are 4 documents in total. Use string search for this queryMgr = readerClient.newQueryManager(); start = 1; termQueryResults = docMgr.search(stringQD, start); System.out.println("Number of results = " + termQueryResults.getTotalSize()); assertEquals("Wrong number of results", 4, termQueryResults.getTotalSize()); }