List of usage examples for com.fasterxml.jackson.core JsonGenerator close
@Override public abstract void close() throws IOException;
From source file:org.usrz.libs.webtools.resources.ServeResource.java
private Response produce(String path) throws Exception { /* Basic check for null/empty path */ if ((path == null) || (path.length() == 0)) return NOT_FOUND; /* Get our resource file, potentially a ".less" file for CSS */ Resource resource = manager.getResource(path); if ((resource == null) && path.endsWith(".css")) { path = path.substring(0, path.length() - 4) + ".less"; resource = manager.getResource(path); }/*from ww w . j av a 2 s. c o m*/ /* If the root is incorrect, log this, if not found, 404 it! */ if (resource == null) return NOT_FOUND; /* Ok, we have a resource on disk, this can be potentially long ... */ final String fileName = resource.getFile().getName(); /* Check and validated our cache */ Entry cached = cache.computeIfPresent(resource, (r, entry) -> entry.resource.hasChanged() ? null : entry); /* If we have no cache, we *might* want to cache something */ if (cached == null) { /* What to do, what to do? */ if ((fileName.endsWith(".css") && minify) || fileName.endsWith(".less")) { /* Lessify CSS and cache */ xlog.debug("Lessifying resource \"%s\"", fileName); cached = new Entry(resource, lxess.convert(resource, minify), styleMediaType); } else if (fileName.endsWith(".js") && minify) { /* Uglify JavaScript and cache */ xlog.debug("Uglifying resource \"%s\"", fileName); cached = new Entry(resource, uglify.convert(resource.readString(), minify, minify), scriptMediaType); } else if (fileName.endsWith(".json")) { /* Strip comments and normalize JSON */ xlog.debug("Normalizing JSON resource \"%s\"", fileName); /* All to do with Jackson */ final Reader reader = resource.read(); final StringWriter writer = new StringWriter(); final JsonParser parser = json.createParser(reader); final JsonGenerator generator = json.createGenerator(writer); /* Not minifying? Means pretty printing! */ if (!minify) generator.useDefaultPrettyPrinter(); /* Get our schtuff through the pipeline */ parser.nextToken(); generator.copyCurrentStructure(parser); generator.flush(); generator.close(); reader.close(); parser.close(); /* Cached results... */ cached = new Entry(resource, writer.toString(), jsonMediaType); } /* Do we have anything to cache? */ if (cached != null) { xlog.debug("Caching resource \"%s\"", fileName); cache.put(resource, cached); } } /* Prepare our basic response from either cache or file */ final ResponseBuilder response = Response.ok(); if (cached != null) { /* Response from cache */ xlog.trace("Serving cached resource \"%s\"", fileName); response.entity(cached.contents).lastModified(new Date(resource.lastModifiedAt())).type(cached.type); } else { /* Response from a file */ xlog.trace("Serving file-based resource \"%s\"", fileName); /* If text/* or application/javascript, append encoding */ MediaType type = MediaTypes.get(fileName); if (type.getType().equals("text") || scriptMediaType.isCompatible(type)) { type = type.withCharset(charsetName); } /* Our file is served! */ response.entity(resource.getFile()).lastModified(new Date(resource.lastModifiedAt())).type(type); } /* Caching headers and build response */ final Date expires = Date.from(Instant.now().plus(cacheDuration)); return response.cacheControl(cacheControl).expires(expires).build(); }
From source file:org.eclipse.winery.repository.resources.entitytypes.relationshiptypes.ImplementationsOfOneRelationshipTypeResource.java
/** * required by implementations.jsp//w ww. j a v a 2 s .c om * * Method similar top the one of ImplementationsOfOneNodeTypeResource * * @return for each node type implementation implementing the associated * node type */ @Override public String getImplementationsTableData() { String res; JsonFactory jsonFactory = new JsonFactory(); StringWriter tableDataSW = new StringWriter(); try { JsonGenerator jGenerator = jsonFactory.createGenerator(tableDataSW); jGenerator.writeStartArray(); Collection<RelationshipTypeImplementationId> allNTIids = BackendUtils .getAllElementsRelatedWithATypeAttribute(RelationshipTypeImplementationId.class, this.getTypeId().getQName()); for (RelationshipTypeImplementationId ntiID : allNTIids) { jGenerator.writeStartArray(); jGenerator.writeString(ntiID.getNamespace().getDecoded()); jGenerator.writeString(ntiID.getXmlId().getDecoded()); jGenerator.writeEndArray(); } jGenerator.writeEndArray(); jGenerator.close(); tableDataSW.close(); res = tableDataSW.toString(); } catch (Exception e) { ImplementationsOfOneRelationshipTypeResource.LOGGER.error(e.getMessage(), e); res = "[]"; } return res; }
From source file:com.netflix.hystrix.serial.SerialHystrixConfiguration.java
private static void serializeConfiguration(HystrixConfiguration config, JsonGenerator json) { try {// w w w. java 2 s . c o m json.writeStartObject(); json.writeStringField("type", "HystrixConfig"); json.writeObjectFieldStart("commands"); for (Map.Entry<HystrixCommandKey, HystrixCommandConfiguration> entry : config.getCommandConfig() .entrySet()) { final HystrixCommandKey key = entry.getKey(); final HystrixCommandConfiguration commandConfig = entry.getValue(); writeCommandConfigJson(json, key, commandConfig); } json.writeEndObject(); json.writeObjectFieldStart("threadpools"); for (Map.Entry<HystrixThreadPoolKey, HystrixThreadPoolConfiguration> entry : config .getThreadPoolConfig().entrySet()) { final HystrixThreadPoolKey threadPoolKey = entry.getKey(); final HystrixThreadPoolConfiguration threadPoolConfig = entry.getValue(); writeThreadPoolConfigJson(json, threadPoolKey, threadPoolConfig); } json.writeEndObject(); json.writeObjectFieldStart("collapsers"); for (Map.Entry<HystrixCollapserKey, HystrixCollapserConfiguration> entry : config.getCollapserConfig() .entrySet()) { final HystrixCollapserKey collapserKey = entry.getKey(); final HystrixCollapserConfiguration collapserConfig = entry.getValue(); writeCollapserConfigJson(json, collapserKey, collapserConfig); } json.writeEndObject(); json.writeEndObject(); json.close(); } catch (Exception e) { throw new RuntimeException(e); } }
From source file:org.eclipse.winery.repository.resources.entitytypes.nodetypes.ImplementationsOfOneNodeTypeResource.java
/** * required by implementations.jsp//w w w .j av a 2 s . c o m * * @return for each node type implementation implementing the associated * node type */ @Override public String getImplementationsTableData() { String res; JsonFactory jsonFactory = new JsonFactory(); StringWriter tableDataSW = new StringWriter(); try { JsonGenerator jGenerator = jsonFactory.createGenerator(tableDataSW); jGenerator.writeStartArray(); Collection<NodeTypeImplementationId> allNodeTypeImplementations = BackendUtils .getAllElementsRelatedWithATypeAttribute(NodeTypeImplementationId.class, this.getTypeId().getQName()); for (NodeTypeImplementationId ntiID : allNodeTypeImplementations) { jGenerator.writeStartArray(); jGenerator.writeString(ntiID.getNamespace().getDecoded()); jGenerator.writeString(ntiID.getXmlId().getDecoded()); jGenerator.writeEndArray(); } jGenerator.writeEndArray(); jGenerator.close(); tableDataSW.close(); res = tableDataSW.toString(); } catch (Exception e) { ImplementationsOfOneNodeTypeResource.LOGGER.error(e.getMessage(), e); res = "[]"; } return res; }
From source file:com.boundary.zoocreeper.Backup.java
public void backup(OutputStream os) throws InterruptedException, IOException, KeeperException { JsonGenerator jgen = null; ZooKeeper zk = null;/* www . j a v a 2 s. c o m*/ try { zk = options.createZooKeeper(LOGGER); jgen = JSON_FACTORY.createGenerator(os); if (options.prettyPrint) { jgen.setPrettyPrinter(new DefaultPrettyPrinter()); } jgen.writeStartObject(); if (zk.exists(options.rootPath, false) == null) { LOGGER.warn("Root path not found: {}", options.rootPath); } else { doBackup(zk, jgen, options.rootPath); } jgen.writeEndObject(); } finally { if (jgen != null) { jgen.close(); } if (zk != null) { zk.close(); } } }
From source file:com.palominolabs.crm.sf.rest.HttpApiClient.java
@Nonnull private String getSObjectFieldsAsJson(@Nonnull SObject sObject) throws IOException { StringWriter writer = new StringWriter(); JsonGenerator jsonGenerator = this.objectMapper.getFactory().createGenerator(writer); jsonGenerator.writeStartObject();// w w w.j av a 2 s .com for (Map.Entry<String, String> entry : sObject.getAllFields().entrySet()) { if (entry.getValue() == null) { jsonGenerator.writeNullField(entry.getKey()); } else { jsonGenerator.writeStringField(entry.getKey(), entry.getValue()); } } jsonGenerator.writeEndObject(); jsonGenerator.close(); writer.close(); return writer.toString(); }
From source file:org.eclipse.winery.repository.resources.servicetemplates.plans.PlansResource.java
@POST @RestDoc(methodDescription = "<p>Linked plans are currently not supported. Existing plans with the same id are overwritten</p> <p>@return JSON with .tableData: Array with row data for dataTable</p>") @Consumes({ MediaType.MULTIPART_FORM_DATA }) @Produces(MediaType.APPLICATION_JSON)//from www . j ava2s . c om // the supertype consumes JSON and XML at org.eclipse.winery.repository.resources._support.collections.EntityCollectionResource.addNewElement(EntityT) // @formatter:off public Response onPost(@FormDataParam("planName") String name, @FormDataParam("planType") String type, @FormDataParam("planLanguage") @RestDocParam(description = "the plan language (e..g, BPMN or BPEL). Full URL.") String language, @FormDataParam("file") @RestDocParam(description = "(optional in the case of BPMN4TOSCA) file containing the plan.") InputStream uploadedInputStream, @FormDataParam("file") FormDataContentDisposition fileDetail, @FormDataParam("file") FormDataBodyPart body) { // @formatter:on if (StringUtils.isEmpty(name)) { return Response.status(Status.BAD_REQUEST).entity("planName must be given").build(); } if (StringUtils.isEmpty(type)) { return Response.status(Status.BAD_REQUEST).entity("planType must be given").build(); } if (StringUtils.isEmpty(language)) { return Response.status(Status.BAD_REQUEST).entity("planLanguage must be given").build(); } boolean bpmn4toscaMode = org.eclipse.winery.common.constants.Namespaces.URI_BPMN4TOSCA_20.equals(language); if (!bpmn4toscaMode) { if (uploadedInputStream == null) { return Response.status(Status.BAD_REQUEST).entity("file must be given").build(); } } // A plan carries both a name and an ID // To be user-friendly, we create the ID based on the name // the drawback is, that we do not allow two plans with the same name // during creation, but allow renaming plans to the same name (as we do // not allow ID renaming) String xmlId = Utils.createXMLidAsString(name); // BEGIN: Store plan file // Determine Id PlansId plansId = new PlansId((ServiceTemplateId) ((ServiceTemplateResource) this.res).getId()); PlanId planId = new PlanId(plansId, new XMLId(xmlId, false)); // Ensure overwriting if (Repository.INSTANCE.exists(planId)) { try { Repository.INSTANCE.forceDelete(planId); // Quick hack to remove the deleted plan from the plans element ((ServiceTemplateResource) this.res).synchronizeReferences(); } catch (IOException e) { return Response.status(Status.INTERNAL_SERVER_ERROR).entity(e.getMessage()).build(); } } String fileName; if (bpmn4toscaMode) { fileName = xmlId + Constants.SUFFIX_BPMN4TOSCA; RepositoryFileReference ref = new RepositoryFileReference(planId, fileName); try { Repository.INSTANCE.putContentToFile(ref, "{}", MediaType.APPLICATION_JSON_TYPE); } catch (IOException e1) { return Response.status(Status.INTERNAL_SERVER_ERROR) .entity("Could not create empty plan. " + e1.getMessage()).build(); } } else { // We use the filename also as local file name. Alternatively, we could use the xml id // With URL encoding, this should not be an issue fileName = Util.URLencode(fileDetail.getFileName()); // Really store it RepositoryFileReference ref = new RepositoryFileReference(planId, fileName); try { Repository.INSTANCE.putContentToFile(ref, uploadedInputStream, body.getMediaType()); } catch (IOException e1) { return Response.status(Status.INTERNAL_SERVER_ERROR) .entity("Could not store plan. " + e1.getMessage()).build(); } } // END: Store plan file TPlan plan = new TPlan(); plan.setId(xmlId); plan.setName(name); plan.setPlanType(type); plan.setPlanLanguage(language); PlansResource.setPlanModelReference(plan, planId, fileName); this.list.add(plan); // prepare result JsonFactory jsonFactory = new JsonFactory(); StringWriter sw = new StringWriter(); try { JsonGenerator jGenerator = jsonFactory.createGenerator(sw); jGenerator.writeStartObject(); jGenerator.writeFieldName("tableData"); jGenerator.writeStartArray(); jGenerator.writeString(xmlId); jGenerator.writeString(""); // precondition jGenerator.writeString(name); jGenerator.writeString(PlanTypesManager.INSTANCE.getShortName(type)); jGenerator.writeString(PlanLanguagesManager.INSTANCE.getShortName(language)); jGenerator.writeEndArray(); jGenerator.writeEndObject(); jGenerator.close(); sw.close(); } catch (JsonGenerationException e) { PlansResource.logger.error(e.getMessage(), e); return Response.serverError().build(); } catch (IOException e) { PlansResource.logger.error(e.getMessage(), e); return Response.serverError().build(); } Response res = BackendUtils.persist(this.res); if (res.getStatus() == 204) { // everything OK, return created return Response.created(Utils.createURI(Util.URLencode(xmlId))).entity(sw.toString()).build(); } else { return res; } }
From source file:gov.bnl.channelfinder.ChannelsResource.java
/** * GET method for retrieving an instance of Channel identified by <tt>chan</tt>. * * @param chan channel name/*from w w w . j a va2 s . c om*/ * @return HTTP Response */ @GET @Path("{chName: " + chNameRegex + "}") @Produces({ "application/json" }) public Response read(@PathParam("chName") String chan) { audit.info("getting ch:" + chan); Client client = ElasticSearchClient.getSearchClient(); String user = securityContext.getUserPrincipal() != null ? securityContext.getUserPrincipal().getName() : ""; try { final GetResponse response = client.prepareGet("channelfinder", "channel", chan).execute().actionGet(); Response r; if (response.isExists()) { final ObjectMapper mapper = new ObjectMapper(); mapper.addMixIn(XmlProperty.class, OnlyXmlProperty.class); mapper.addMixIn(XmlTag.class, OnlyXmlTag.class); StreamingOutput stream = new StreamingOutput() { @Override public void write(OutputStream os) throws IOException, WebApplicationException { JsonGenerator jg = mapper.getFactory().createGenerator(os, JsonEncoding.UTF8); jg.writeObject(mapper.readValue(response.getSourceAsBytes(), XmlChannel.class)); jg.flush(); jg.close(); } }; r = Response.ok(stream).build(); } else { r = Response.status(Response.Status.NOT_FOUND).build(); } log.fine(user + "|" + uriInfo.getPath() + "|GET|OK|" + r.getStatus()); return r; } catch (Exception e) { return handleException(user, "GET", Response.Status.INTERNAL_SERVER_ERROR, e); } finally { } }
From source file:org.openiot.security.oauth.OAuth20PermissionController.java
@Override protected ModelAndView handleRequestInternal(final HttpServletRequest request, final HttpServletResponse response) throws Exception { final String clientId = request.getParameter(OAuthConstants.CLIENT_ID); log.debug("clientId : {}", clientId); final String accessToken = request.getParameter(OAuthConstants.ACCESS_TOKEN); log.debug("accessToken : {}", accessToken); final String callerClientId = request.getParameter("caller_client_id"); log.debug("callerClientId : {}", callerClientId); final String callerAccessToken = request.getParameter("caller_access_token"); log.debug("callerAccessToken : {}", callerAccessToken); final JsonFactory jsonFactory = new JsonFactory(); final JsonGenerator jsonGenerator = jsonFactory.createJsonGenerator(response.getWriter()); response.setContentType("application/json"); // accessToken is required if (StringUtils.isBlank(accessToken)) { log.error("missing accessToken"); jsonGenerator.writeStartObject(); jsonGenerator.writeStringField("error", OAuthConstants.MISSING_ACCESS_TOKEN); jsonGenerator.writeEndObject();/*from ww w . j ava 2 s . c om*/ jsonGenerator.close(); response.flushBuffer(); return null; } // caller accessToken is required if (StringUtils.isBlank(callerAccessToken)) { log.error("missing caller accessToken"); jsonGenerator.writeStartObject(); jsonGenerator.writeStringField("error", "missing_callerAccessToken"); jsonGenerator.writeEndObject(); jsonGenerator.close(); response.flushBuffer(); return null; } // clientId is required if (StringUtils.isBlank(clientId)) { log.error("missing clientId"); jsonGenerator.writeStartObject(); jsonGenerator.writeStringField("error", MISSING_CLIENT_ID); jsonGenerator.writeEndObject(); jsonGenerator.close(); response.flushBuffer(); return null; } // caller clientId is required if (StringUtils.isBlank(callerClientId)) { log.error("missing clientId"); jsonGenerator.writeStartObject(); jsonGenerator.writeStringField("error", "missing_callerClientId"); jsonGenerator.writeEndObject(); jsonGenerator.close(); response.flushBuffer(); return null; } // get ticket granting ticket final TicketGrantingTicket ticketGrantingTicket = (TicketGrantingTicket) this.ticketRegistry .getTicket(accessToken); if (ticketGrantingTicket == null || ticketGrantingTicket.isExpired()) { log.error("expired accessToken : {}", accessToken); jsonGenerator.writeStartObject(); jsonGenerator.writeStringField("error", OAuthConstants.EXPIRED_ACCESS_TOKEN); jsonGenerator.writeEndObject(); jsonGenerator.close(); response.flushBuffer(); return null; } // get ticket granting ticket for the caller final TicketGrantingTicket callerTicketGrantingTicket = (TicketGrantingTicket) this.ticketRegistry .getTicket(callerAccessToken); if (callerTicketGrantingTicket == null || callerTicketGrantingTicket.isExpired()) { log.error("expired accessToken : {}", callerAccessToken); jsonGenerator.writeStartObject(); jsonGenerator.writeStringField("error", OAuthConstants.EXPIRED_ACCESS_TOKEN + "_for_caller"); jsonGenerator.writeEndObject(); jsonGenerator.close(); response.flushBuffer(); return null; } // name of the CAS service final Collection<RegisteredService> services = servicesManager.getAllServices(); RegisteredService service = null; for (final RegisteredService aService : services) { if (StringUtils.equals(aService.getName(), clientId)) { service = aService; break; } } if (service == null) { log.error("nonexistent clientId : {}", clientId); jsonGenerator.writeStartObject(); jsonGenerator.writeStringField("error", NONEXISTENT_CLIENT_ID); jsonGenerator.writeEndObject(); jsonGenerator.close(); response.flushBuffer(); return null; } // TODO: check if the TGT is granted to the client?! // final TicketGrantingTicket rawTicket = ((AbstractDistributedTicketRegistry.TicketGrantingTicketDelegator)ticketGrantingTicket).getTicket(); // final Field servicesField = rawTicket.getClass().getDeclaredField("services"); // servicesField.setAccessible(true); // HashMap<String, Service> servicesMap = new HashMap<String, Service>(); // servicesMap = (HashMap<String, Service>) servicesField.get(rawTicket); // log.error("ServiceMaps is empty ? {}", servicesMap.isEmpty()); // for(Map.Entry<String, Service> entry : servicesMap.entrySet()){ // AbstractWebApplicationService webAppService = (AbstractWebApplicationService) entry.getValue(); // log.error("Service for ticket {} is {}", rawTicket.getId(), webAppService.getId()); // } // if (!servicesMap.containsKey(service.getId()) || !servicesMap.get(service.getId()).equals(service)) { // log.error("Ticket is not granted to client : {}", clientId); // jsonGenerator.writeStartObject(); // jsonGenerator.writeStringField("error", TICKET_NOT_GRANTED); // jsonGenerator.writeEndObject(); // jsonGenerator.close(); // response.flushBuffer(); // return null; // } // name of the CAS service for caller RegisteredService callerService = null; for (final RegisteredService aService : services) { if (StringUtils.equals(aService.getName(), callerClientId)) { callerService = aService; break; } } if (callerService == null) { log.error("nonexistent caller clientId : {}", callerClientId); jsonGenerator.writeStartObject(); jsonGenerator.writeStringField("error", NONEXISTENT_CLIENT_ID + "for_caller"); jsonGenerator.writeEndObject(); jsonGenerator.close(); response.flushBuffer(); return null; } final Principal principal = ticketGrantingTicket.getAuthentication().getPrincipal(); final Map<String, Set<String>> permissions = extractPermissions(callerService.getId(), principal.getId()); jsonGenerator.writeStartObject(); jsonGenerator.writeStringField(CasWrapperProfile.ID, principal.getId()); jsonGenerator.writeArrayFieldStart("role_permissions"); for (final String roleName : permissions.keySet()) { jsonGenerator.writeStartObject(); jsonGenerator.writeArrayFieldStart(roleName); for (final String permission : permissions.get(roleName)) jsonGenerator.writeString(permission); jsonGenerator.writeEndArray(); jsonGenerator.writeEndObject(); } jsonGenerator.writeEndArray(); jsonGenerator.writeEndObject(); jsonGenerator.close(); response.flushBuffer(); return null; }
From source file:com.ning.metrics.action.hdfs.reader.HdfsListing.java
@SuppressWarnings({ "unchecked", "unused" }) public void toJson(final OutputStream out, final boolean pretty) throws IOException { final String parentPath = getParentPath() == null ? "" : getParentPath(); final JsonGenerator generator = new JsonFactory().createJsonGenerator(out); generator.configure(JsonGenerator.Feature.AUTO_CLOSE_TARGET, false); if (pretty) { generator.setPrettyPrinter(new DefaultPrettyPrinter()); }//w w w .jav a 2 s. c o m generator.writeStartObject(); generator.writeObjectField(JSON_LISTING_PATH, getPath()); generator.writeObjectField(JSON_LISTING_PARENT_PATH, parentPath); generator.writeArrayFieldStart(JSON_LISTING_ENTRIES); // Important: need to flush before appending pre-serialized events generator.flush(); for (HdfsEntry entry : getEntries()) { entry.toJson(generator); } generator.writeEndArray(); generator.writeEndObject(); generator.close(); }