List of usage examples for com.fasterxml.jackson.core JsonGenerator writeEndArray
public abstract void writeEndArray() throws IOException, JsonGenerationException;
From source file:com.google.openrtb.json.OpenRtbJsonWriter.java
@SuppressWarnings("deprecation") protected void writeVideoFields(Video video, JsonGenerator gen) throws IOException { if (checkRequired(video.getMimesCount())) { writeStrings("mimes", video.getMimesList(), gen); }// ww w . j av a2 s. com if (video.hasMinduration()) { gen.writeNumberField("minduration", video.getMinduration()); } if (video.hasMaxduration()) { gen.writeNumberField("maxduration", video.getMaxduration()); } if (video.hasProtocol()) { gen.writeNumberField("protocol", video.getProtocol().getNumber()); } if (checkRequired(video.getProtocolsCount())) { writeEnums("protocols", video.getProtocolsList(), gen); } if (video.hasW()) { gen.writeNumberField("w", video.getW()); } if (video.hasH()) { gen.writeNumberField("h", video.getH()); } if (video.hasStartdelay()) { gen.writeNumberField("startdelay", video.getStartdelay()); } if (video.hasLinearity()) { gen.writeNumberField("linearity", video.getLinearity().getNumber()); } if (video.hasSequence()) { gen.writeNumberField("sequence", video.getSequence()); } writeEnums("battr", video.getBattrList(), gen); if (video.hasMaxextended()) { gen.writeNumberField("maxextended", video.getMaxextended()); } if (video.hasMinbitrate()) { gen.writeNumberField("minbitrate", video.getMinbitrate()); } if (video.hasMaxbitrate()) { gen.writeNumberField("maxbitrate", video.getMaxbitrate()); } if (video.hasBoxingallowed()) { writeIntBoolField("boxingallowed", video.getBoxingallowed(), gen); } writeEnums("playbackmethod", video.getPlaybackmethodList(), gen); writeEnums("delivery", video.getDeliveryList(), gen); if (video.hasPos()) { gen.writeNumberField("pos", video.getPos().getNumber()); } if (video.getCompanionadCount() != 0) { // OpenRTB 2.2+ gen.writeArrayFieldStart("companionad"); for (Banner companionad : video.getCompanionadList()) { writeBanner(companionad, gen); } gen.writeEndArray(); } if (video.hasCompanionad21()) { // OpenRTB 2.1- gen.writeFieldName("companionad"); writeCompanionAd21(video.getCompanionad21(), gen); } writeEnums("api", video.getApiList(), gen); writeEnums("companiontype", video.getCompaniontypeList(), gen); if (video.hasSkip()) { writeIntBoolField("skip", video.getSkip(), gen); } if (video.hasSkipmin()) { gen.writeNumberField("skipmin", video.getSkipmin()); } if (video.hasSkipafter()) { gen.writeNumberField("skipafter", video.getSkipafter()); } }
From source file:de.escalon.hypermedia.spring.de.escalon.hypermedia.spring.jackson.LinkListSerializer.java
private void recurseSupportedProperties(JsonGenerator jgen, String currentVocab, Class<?> beanType, ActionDescriptor actionDescriptor, ActionInputParameter actionInputParameter, Object currentCallValue) throws IntrospectionException, IOException { // TODO support Option provider by other method args? final BeanInfo beanInfo = Introspector.getBeanInfo(beanType); final PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors(); // TODO collection and map for (PropertyDescriptor propertyDescriptor : propertyDescriptors) { final Method writeMethod = propertyDescriptor.getWriteMethod(); if (writeMethod == null) { continue; }//from ww w . j a v a2 s . c om final Class<?> propertyType = propertyDescriptor.getPropertyType(); // TODO: the property name must be a valid URI - need to check context for terms? String propertyName = getWritableExposedPropertyOrPropertyName(propertyDescriptor); if (DataType.isScalar(propertyType)) { final Property property = new Property(beanType, propertyDescriptor.getReadMethod(), propertyDescriptor.getWriteMethod(), propertyDescriptor.getName()); Object propertyValue = getPropertyValue(currentCallValue, propertyDescriptor); ActionInputParameter propertySetterInputParameter = new ActionInputParameter( new MethodParameter(propertyDescriptor.getWriteMethod(), 0), propertyValue); final Object[] possiblePropertyValues = actionInputParameter.getPossibleValues(property, actionDescriptor); writeSupportedProperty(jgen, currentVocab, propertySetterInputParameter, propertyName, property, possiblePropertyValues); } else { jgen.writeStartObject(); jgen.writeStringField("hydra:property", propertyName); // TODO: is the property required -> for bean props we need the Access annotation to express that jgen.writeObjectFieldStart(getPropertyOrClassNameInVocab(currentVocab, "rangeIncludes", JacksonHydraSerializer.HTTP_SCHEMA_ORG, "schema:")); Expose expose = AnnotationUtils.getAnnotation(propertyType, Expose.class); String subClass; if (expose != null) { subClass = expose.value(); } else { subClass = propertyType.getSimpleName(); } jgen.writeStringField(getPropertyOrClassNameInVocab(currentVocab, "subClassOf", "http://www.w3.org/2000/01/rdf-schema#", "rdfs:"), subClass); jgen.writeArrayFieldStart("hydra:supportedProperty"); Object propertyValue = getPropertyValue(currentCallValue, propertyDescriptor); recurseSupportedProperties(jgen, currentVocab, propertyType, actionDescriptor, actionInputParameter, propertyValue); jgen.writeEndArray(); jgen.writeEndObject(); jgen.writeEndObject(); } } }
From source file:org.codehaus.modello.plugin.jsonschema.JsonSchemaGenerator.java
private void writeClassDocumentation(JsonGenerator generator, ModelClass modelClass, boolean isRoot) throws IOException { if (!isRoot) { generator.writeObjectFieldStart(modelClass.getName()); }// ww w. j a v a 2 s . co m generator.writeStringField("id", modelClass.getName() + '#'); writeDescriptionField(generator, modelClass.getDescription()); writeTypeField(generator, "object"); generator.writeObjectFieldStart("properties"); List<String> required = new LinkedList<String>(); ModelClass reference = modelClass; // traverse the whole modelClass hierarchy to create the nested Builder instance while (reference != null) { // collect parameters and set them in the instance object for (ModelField modelField : reference.getFields(getGeneratedVersion())) { if (modelField.isRequired()) { required.add(modelField.getName()); } // each field is represented as object generator.writeObjectFieldStart(modelField.getName()); writeDescriptionField(generator, modelField.getDescription()); if (modelField instanceof ModelAssociation) { ModelAssociation modelAssociation = (ModelAssociation) modelField; if (modelAssociation.isOneMultiplicity()) { writeTypeField(generator, modelAssociation.getType()); } else { // MANY_MULTIPLICITY writeTypeField(generator, "array"); generator.writeObjectFieldStart("items"); String type = modelAssociation.getType(); String toType = modelAssociation.getTo(); if (ModelDefault.LIST.equals(type) || ModelDefault.SET.equals(type)) { writeTypeField(generator, toType); } else { // Map or Properties writeTypeField(generator, "object"); generator.writeObjectFieldStart("properties"); XmlAssociationMetadata xmlAssociationMetadata = (XmlAssociationMetadata) modelAssociation .getAssociationMetadata(XmlAssociationMetadata.ID); if (xmlAssociationMetadata.isMapExplode()) { // key generator.writeObjectFieldStart("key"); writeTypeField(generator, "string"); generator.writeEndObject(); // value generator.writeObjectFieldStart("value"); writeTypeField(generator, toType); generator.writeEndObject(); // properties generator.writeEndObject(); // required field generator.writeArrayFieldStart("required"); generator.writeString("key"); generator.writeString("value"); generator.writeEndArray(); } else { generator.writeObjectFieldStart("*"); writeTypeField(generator, toType); generator.writeEndObject(); } } // items generator.writeEndObject(); } } else { writeTypeField(generator, modelField.getType()); } generator.writeEndObject(); } if (reference.hasSuperClass()) { reference = reference.getModel().getClass(reference.getSuperClass(), getGeneratedVersion()); } else { reference = null; } } // end of `properties` element generator.writeEndObject(); // write `required` sequence if (!required.isEmpty()) { generator.writeArrayFieldStart("required"); for (String requiredField : required) { generator.writeString(requiredField); } generator.writeEndArray(); } // end definition if (!isRoot) { generator.writeEndObject(); } }
From source file:com.rhfung.P2PDictionary.DataConnection.java
private byte[] GetDictionaryAsJson() { ByteArrayOutputStream stream = new ByteArrayOutputStream(); JsonFactory jsonFactory = new JsonFactory(); // or, for data binding, org.codehaus.jackson.mapper.MappingJsonFactory JsonGenerator jg; try {//w w w . jav a 2 s. co m jg = jsonFactory.createJsonGenerator(stream, JsonEncoding.UTF8); } catch (IOException e) { // TODO Auto-generated catch block return new byte[0]; } // or Stream, Reader List<DataEntry> entries; // make a local copy for access without worry about changes thereafter this.dataLock.readLock().lock(); try { entries = new Vector<DataEntry>(this.data.size()); //entries.AddRange(this.data.Values.Where(x => x.subscribed)); entries.addAll(this.data.values()); } finally { this.dataLock.readLock().unlock(); } // write count of data entries //writer.write(DATA_NAMESPACE + "/\t" + this.local_uid + "\t0\tRW\t" + entries.size() + "\t" + this.local_uid + NEWLINE) ; try { jg.writeStartObject(); jg.writeObjectField("size", entries.size()); jg.writeObjectField("localid", this.local_uid); jg.writeArrayFieldStart("keys"); // write each data entry, converting simple data immediately // (pretend i don't know about these non-subscribed entries) for (DataEntry d : entries) { WriteJSONForEntry(jg, d); } jg.writeEndArray(); jg.writeEndObject(); jg.close(); } catch (JsonGenerationException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return stream.toByteArray(); }
From source file:de.escalon.hypermedia.spring.de.escalon.hypermedia.spring.jackson.LinkListSerializer.java
private void writePossiblePropertyValues(JsonGenerator jgen, String currentVocab, ActionInputParameter actionInputParameter, Object[] possiblePropertyValues) throws IOException { // Enable the following to list possible values. // Problem: how to express individuals only for certain hydra:options // not all hydra:options should be taken as uris, sometimes they might be just literals // how to make that clear to the client? // maybe we must write them out for options // if (possiblePropertyValues.length > 0) { // jgen.writeArrayFieldStart("hydra:option"); ////from w w w . j a va2s . c o m // for (Object possibleValue : possiblePropertyValues) { // // TODO: apply "hydra:option" : { "@type": "@vocab"} to context for enums // writeScalarValue(jgen, possibleValue, actionInputParameter.getParameterType()); // } // jgen.writeEndArray(); // } if (actionInputParameter.isArrayOrCollection()) { jgen.writeBooleanField(getPropertyOrClassNameInVocab(currentVocab, "multipleValues", JacksonHydraSerializer.HTTP_SCHEMA_ORG, "schema:"), true); } // valueRequired (hard to say, using @Access on Event is for all update requests - or make // specific request beans for different // purposes rather than always passing an instance of e.g. Event?) // -> update is a different use case than create - or maybe have an @Requires("eventStatus") // annotation alongside requestBody to tell which attributes are required or writable, and use Requires over // bean structure, where ctor with least length of args is required and setters are supported // but optional? The bean structure does say what is writable for updates, but not what is required for creation. Right now setters are supportedProperties. For creation we would have to add constructor arguments as supportedProperties. // (/) defaultValue (pre-filled value, e.g. list of selected items for option) // valueName (for iri templates only) // (/) readonlyValue (true for final public field or absence of setter, send fixed value like hidden field?) -> use hydra:readable, hydra:writable // (/) multipleValues // (/) valueMinLength // (/) valueMaxLength // (/) valuePattern // minValue (DateTime support) // maxValue (DateTime support) // (/) stepValue final Map<String, Object> inputConstraints = actionInputParameter.getInputConstraints(); if (actionInputParameter.hasCallValue()) { if (actionInputParameter.isArrayOrCollection()) { Object[] callValues = actionInputParameter.getCallValues(); Class<?> componentType = callValues.getClass().getComponentType(); // only write defaultValue for array of scalars if (DataType.isScalar(componentType)) { jgen.writeFieldName(getPropertyOrClassNameInVocab(currentVocab, "defaultValue", JacksonHydraSerializer.HTTP_SCHEMA_ORG, "schema:")); jgen.writeStartArray(); for (Object callValue : callValues) { writeScalarValue(jgen, callValue, componentType); } jgen.writeEndArray(); } } else { jgen.writeFieldName(getPropertyOrClassNameInVocab(currentVocab, "defaultValue", JacksonHydraSerializer.HTTP_SCHEMA_ORG, "schema:")); writeScalarValue(jgen, actionInputParameter.getCallValueFormatted(), actionInputParameter.getNestedParameterType()); } } if (!inputConstraints.isEmpty()) { final List<String> keysToAppendValue = Arrays.asList(ActionInputParameter.MAX, ActionInputParameter.MIN, ActionInputParameter.STEP); for (String keyToAppendValue : keysToAppendValue) { final Object constraint = inputConstraints.get(keyToAppendValue); if (constraint != null) { jgen.writeFieldName(getPropertyOrClassNameInVocab(currentVocab, keyToAppendValue + "Value", JacksonHydraSerializer.HTTP_SCHEMA_ORG, "schema:")); jgen.writeNumber(constraint.toString()); } } final List<String> keysToPrependValue = Arrays.asList(ActionInputParameter.MAX_LENGTH, ActionInputParameter.MIN_LENGTH, ActionInputParameter.PATTERN); for (String keyToPrependValue : keysToPrependValue) { final Object constraint = inputConstraints.get(keyToPrependValue); if (constraint != null) { jgen.writeFieldName(getPropertyOrClassNameInVocab(currentVocab, "value" + StringUtils.capitalize(keyToPrependValue), JacksonHydraSerializer.HTTP_SCHEMA_ORG, "schema:")); if (ActionInputParameter.PATTERN.equals(keyToPrependValue)) { jgen.writeString(constraint.toString()); } else { jgen.writeNumber(constraint.toString()); } } } } }
From source file:org.jbpm.designer.bpmn2.impl.Bpmn2JsonMarshaller.java
protected void marshallGroup(Group group, BPMNPlane plane, JsonGenerator generator, float xOffset, float yOffset, String preProcessingData, Definitions def) throws JsonGenerationException, IOException { Map<String, Object> properties = new LinkedHashMap<>(); if (group.getCategoryValueRef() != null && group.getCategoryValueRef().getValue() != null) { properties.put("name", unescapeXml(group.getCategoryValueRef().getValue())); }//w w w . j ava2 s . c o m Documentation doc = getDocumentation(group); if (doc != null) { properties.put("documentation", doc.getText()); } marshallProperties(properties, generator); generator.writeObjectFieldStart("stencil"); generator.writeObjectField("id", "Group"); generator.writeEndObject(); generator.writeArrayFieldStart("childShapes"); generator.writeEndArray(); generator.writeArrayFieldStart("outgoing"); if (findOutgoingAssociation(plane, group) != null) { generator.writeStartObject(); generator.writeObjectField("resourceId", findOutgoingAssociation(plane, group).getId()); generator.writeEndObject(); } generator.writeEndArray(); Bounds bounds = ((BPMNShape) findDiagramElement(plane, group)).getBounds(); generator.writeObjectFieldStart("bounds"); generator.writeObjectFieldStart("lowerRight"); generator.writeObjectField("x", bounds.getX() + bounds.getWidth() - xOffset); generator.writeObjectField("y", bounds.getY() + bounds.getHeight() - yOffset); generator.writeEndObject(); generator.writeObjectFieldStart("upperLeft"); generator.writeObjectField("x", bounds.getX() - xOffset); generator.writeObjectField("y", bounds.getY() - yOffset); generator.writeEndObject(); generator.writeEndObject(); }
From source file:org.fluentd.jvmwatcher.parser.JsonSimpleLogParser.java
/** * @param generator//from w ww . j ava 2 s. c o m * @param state * @throws IOException * @throws JsonGenerationException */ private void outSimpleLog(JsonGenerator generator, JvmWatchState state) throws JsonGenerationException, IOException { Collection<JvmStateLog> logArray = state.getStateLog(); // convert to JSON stream of JvmStateLog. for (JvmStateLog elem : logArray) { generator.writeStartObject(); // Common generator.writeNumberField(LOG_DATETIME, elem.getLogDateTime()); generator.writeStringField(HOST_NAME, this.getHostName()); generator.writeStringField(PROC_STATE, elem.getProcState().name()); generator.writeNumberField(JVM_ID, state.getJvmId()); generator.writeStringField(SHORT_NAME, state.getShortName()); generator.writeStringField(DISPRAY_NAME, state.getDisplayName()); // runtime generator.writeNumberField(START_TIME, state.getJvmStartTime()); generator.writeNumberField(LOG_RUN_UP_TIME, elem.getJvmUpTime()); // cpu usage generator.writeNumberField(LOG_CPU_USAGE, elem.getCpuUsage()); // Compilation generator.writeNumberField(LOG_COMPILE_TIME, elem.getCompileTime()); // Class loading generator.writeNumberField(LOG_CLASS_LOAD_CNT, elem.getClassLoadedCount()); generator.writeNumberField(LOG_CLASS_UNLOAD_CNT, elem.getClassUnloadedCount()); generator.writeNumberField(LOG_CLASS_TOTAL_LOAD_CNT, elem.getClassTotalLoadedCount()); // Thread generator.writeNumberField(LOG_THREAD_CNT, elem.getThreadCount()); generator.writeNumberField(LOG_DAEMON_TH_CNT, elem.getDaemonThreadCount()); generator.writeNumberField(LOG_PEAK_TH_CNT, elem.getPeakThreadCount()); // Memory if (elem.getHeapSize() != null) { generator.writeNumberField(LOG_MEM_HEAP_INIT, elem.getHeapSize().getInit()); generator.writeNumberField(LOG_MEM_HEAP_USED, elem.getHeapSize().getUsed()); generator.writeNumberField(LOG_MEM_HEAP_COMMITED, elem.getHeapSize().getCommitted()); generator.writeNumberField(LOG_MEM_HEAP_MAX, elem.getHeapSize().getMax()); } if (elem.getNotheapSize() != null) { generator.writeNumberField(LOG_MEM_NOTHEAP_INIT, elem.getNotheapSize().getInit()); generator.writeNumberField(LOG_MEM_NOTHEAP_USED, elem.getNotheapSize().getUsed()); generator.writeNumberField(LOG_MEM_NOTHEAP_COMMITED, elem.getNotheapSize().getCommitted()); generator.writeNumberField(LOG_MEM_NOTHEAP_MAX, elem.getNotheapSize().getMax()); } generator.writeNumberField(LOG_MEM_PENDING_FIN_CNT, elem.getPendingFinalizationCount_()); // OS Information generator.writeNumberField(LOG_OS_TOTAL_PHY_MEM_SIZE, elem.getTotalPhysicalMemorySize()); generator.writeNumberField(LOG_OS_TOTAL_SWAP_MEM_SIZE, elem.getTotalSwapSpaceSize()); generator.writeNumberField(LOG_OS_FREE_PHY_MEM_SIZE, elem.getFreePhysicalMemorySize()); generator.writeNumberField(LOG_OS_FREE_SWAP_MEM_SIZE, elem.getFreeSwapSpaceSize()); generator.writeNumberField(LOG_OS_COMMIT_VMEM_SIZE, elem.getCommittedVirtualMemorySize()); Collection<GarbageCollectorState> gcColl = elem.getGcStateCollection(); if (null != gcColl) { // GC INformation (Array output) generator.writeFieldName(LOG_KEY_GC_COLLECT); generator.writeStartArray(); for (GarbageCollectorState gcElem : gcColl) { generator.writeStartObject(); generator.writeStringField(LOG_GC_MEM_MGR_NAME, gcElem.getMemoryManagerName()); generator.writeNumberField(LOG_GC_COLLECTION_CNT, gcElem.getCollectionCount()); generator.writeNumberField(LOG_GC_COLLECTION_TIME, gcElem.getCollectionTime()); generator.writeEndObject(); } generator.writeEndArray(); } generator.writeEndObject(); generator.writeRaw("\n"); } }
From source file:eionet.meta.exports.json.VocabularyJSONOutputHelper.java
/** * Writes JSON to output stream.// ww w . j av a 2 s. c om * <p> * NOTE: For readability purposes, nested blocks are used in this method while generating json contents. * </p> * * @param out * output stream * @param vocabulary * vocabulary base uri * @param concepts * list of vocabulary concepts * @param language * language for the preferred label * @throws java.io.IOException * if error in I/O */ public static void writeJSON(OutputStream out, VocabularyFolder vocabulary, List<VocabularyConcept> concepts, String language) throws IOException { OutputStreamWriter osw = new OutputStreamWriter(out, "UTF-8"); JsonFactory f = new JsonFactory(); JsonGenerator generator = f.createGenerator(out); generator.useDefaultPrettyPrinter(); language = StringUtils.trimToNull(language); boolean checkLanguage = StringUtils.isNotBlank(language); List<String> relationalDataElemIdentifiers = new ArrayList<String>(); relationalDataElemIdentifiers.add(BROADER); relationalDataElemIdentifiers.add(NARROWER); // start json object generator.writeStartObject(); // add context generator.writeObjectFieldStart(JSON_LD_CONTEXT); { generator.writeStringField(JSON_LD_BASE, VocabularyFolder.getBaseUri(vocabulary)); generator.writeStringField(VocabularyOutputHelper.LinkedDataNamespaces.SKOS, VocabularyOutputHelper.LinkedDataNamespaces.SKOS_NS); generator.writeStringField(JSON_LD_CONCEPTS, SKOS_CONCEPT); generator.writeStringField(PREF_LABEL, SKOS_PREF_LABEL); for (String dataElemShortIdentifier : relationalDataElemIdentifiers) { generator.writeStringField(dataElemShortIdentifier, DATA_ELEM_MAP.get(dataElemShortIdentifier)); } generator.writeStringField(JSON_LD_LANGUAGE, StringUtils.isNotBlank(language) ? language : DEFAULT_LANGUAGE); } generator.writeEndObject(); // start writing concepts... generator.writeArrayFieldStart(JSON_LD_CONCEPTS); // iterate on concepts for (VocabularyConcept concept : concepts) { generator.writeStartObject(); { generator.writeStringField(JSON_LD_ID, concept.getIdentifier()); generator.writeStringField(JSON_LD_TYPE, SKOS_CONCEPT); // start writing prefLabels generator.writeArrayFieldStart(PREF_LABEL); { String label; String labelLang; if (checkLanguage) { List<DataElement> dataElementValuesByNameAndLang = VocabularyOutputHelper .getDataElementValuesByNameAndLang(SKOS_PREF_LABEL, language, concept.getElementAttributes()); if (dataElementValuesByNameAndLang != null && dataElementValuesByNameAndLang.size() > 0) { label = dataElementValuesByNameAndLang.get(0).getAttributeValue(); labelLang = language; } else { dataElementValuesByNameAndLang = VocabularyOutputHelper .getDataElementValuesByNameAndLang(SKOS_PREF_LABEL, DEFAULT_LANGUAGE, concept.getElementAttributes()); if (dataElementValuesByNameAndLang != null && dataElementValuesByNameAndLang.size() > 0) { label = dataElementValuesByNameAndLang.get(0).getAttributeValue(); } else { label = concept.getLabel(); } labelLang = DEFAULT_LANGUAGE; } generator.writeStartObject(); { generator.writeStringField(JSON_LD_VALUE, label); generator.writeStringField(JSON_LD_LANGUAGE, labelLang); } generator.writeEndObject(); } else { generator.writeStartObject(); { generator.writeStringField(JSON_LD_VALUE, concept.getLabel()); generator.writeStringField(JSON_LD_LANGUAGE, DEFAULT_LANGUAGE); } generator.writeEndObject(); List<DataElement> dataElementValuesByName = VocabularyOutputHelper .getDataElementValuesByName(SKOS_PREF_LABEL, concept.getElementAttributes()); if (dataElementValuesByName != null && dataElementValuesByName.size() > 0) { for (DataElement elem : dataElementValuesByName) { generator.writeStartObject(); { generator.writeStringField(JSON_LD_VALUE, elem.getAttributeValue()); generator.writeStringField(JSON_LD_LANGUAGE, elem.getAttributeLanguage()); } generator.writeEndObject(); } } } } // end writing prefLabels generator.writeEndArray(); // write data elements for (String shortDataElemIdentifier : relationalDataElemIdentifiers) { // check if it has this element List<DataElement> dataElementValuesByName = VocabularyOutputHelper.getDataElementValuesByName( DATA_ELEM_MAP.get(shortDataElemIdentifier), concept.getElementAttributes()); if (dataElementValuesByName != null && dataElementValuesByName.size() > 0) { // start writing element values generator.writeArrayFieldStart(shortDataElemIdentifier); for (DataElement elem : dataElementValuesByName) { generator.writeStartObject(); { generator.writeStringField(JSON_LD_ID, elem.getRelatedConceptIdentifier()); } generator.writeEndObject(); } // end writing element values generator.writeEndArray(); } } } // end writing concept generator.writeEndObject(); } // end of iteration on concepts generator.writeEndArray(); // end of vocabulary name generator.writeEndObject(); // close writer and stream generator.close(); osw.close(); }
From source file:com.googlecode.jmxtrans.model.output.StackdriverWriter.java
/** * Take query results, make a JSON String * //from ww w . jav a 2 s.co m * @param results List of Result objects * @return a String containing a JSON message, or null if there are no values to report * * @throws IOException if there is some problem generating the JSON, should be uncommon */ private String getGatewayMessage(final List<Result> results) throws IOException { int valueCount = 0; Writer writer = new StringWriter(); JsonGenerator g = jsonFactory.createGenerator(writer); g.writeStartObject(); g.writeNumberField("timestamp", System.currentTimeMillis() / 1000); g.writeNumberField("proto_version", STACKDRIVER_PROTOCOL_VERSION); g.writeArrayFieldStart("data"); List<String> typeNames = this.getTypeNames(); for (Result metric : results) { Map<String, Object> values = metric.getValues(); if (values != null) { for (Entry<String, Object> entry : values.entrySet()) { if (isNumeric(entry.getValue())) { // we have a numeric value, write a value into the message StringBuilder nameBuilder = new StringBuilder(); // put the prefix if set if (this.prefix != null) { nameBuilder.append(prefix); nameBuilder.append("."); } // put the class name or its alias if available if (!metric.getKeyAlias().isEmpty()) { nameBuilder.append(metric.getKeyAlias()); } else { nameBuilder.append(metric.getClassName()); } // Wildcard "typeNames" substitution String typeName = com.googlecode.jmxtrans.model.naming.StringUtils .cleanupStr(TypeNameValuesStringBuilder.getDefaultBuilder().build(typeNames, metric.getTypeName())); if (typeName != null && typeName.length() > 0) { nameBuilder.append("."); nameBuilder.append(typeName); } // add the attribute name nameBuilder.append("."); nameBuilder.append(metric.getAttributeName()); // put the value name if it differs from the attribute name if (!entry.getKey().equals(metric.getAttributeName())) { nameBuilder.append("."); nameBuilder.append(entry.getKey()); } // check for Float/Double NaN since these will cause the message validation to fail if (entry.getValue() instanceof Float && ((Float) entry.getValue()).isNaN()) { logger.info("Metric value for " + nameBuilder.toString() + " is NaN, skipping"); continue; } if (entry.getValue() instanceof Double && ((Double) entry.getValue()).isNaN()) { logger.info("Metric value for " + nameBuilder.toString() + " is NaN, skipping"); continue; } valueCount++; g.writeStartObject(); g.writeStringField("name", nameBuilder.toString()); g.writeNumberField("value", Double.valueOf(entry.getValue().toString())); // if the metric is attached to an instance, include that in the message if (instanceId != null && !instanceId.isEmpty()) { g.writeStringField("instance", instanceId); } g.writeNumberField("collected_at", metric.getEpoch() / 1000); g.writeEndObject(); } } } } g.writeEndArray(); g.writeEndObject(); g.flush(); g.close(); // return the message if there are any values to report if (valueCount > 0) { return writer.toString(); } else { return null; } }