/** * Write properties by adding each property as a field to current JSON object. * * @param value provides the properties to be written. * @throws IOException if there is an error writing. */ public void writeProperties(Map<String, ?> value) throws IOException { if (value.isEmpty() == false) { for (Map.Entry<String, ?> entry : value.entrySet()) { _jsonGenerator.writeFieldName(entry.getKey()); writeData(entry.getValue()); } } }
/** * Encode a field's default value. * * @param field providing the default value to encode. * @throws IOException if there is an error while encoding. */ protected void encodeFieldDefault(RecordDataSchema.Field field) throws IOException { if (field.getDefault() != null) { _builder.writeFieldName(DEFAULT_KEY); _builder.writeData(field.getDefault()); } }
/** * Encode custom Avro schema. * * @param schema the {@link DataSchema} to encode. * @return true if there is a custom Avro schema. */ protected boolean encodeCustomAvroSchema(DataSchema schema) throws IOException { boolean encodedCustomAvroSchema = false; AvroOverride avroOverride = _avroOverrideMap.getAvroOverride(schema); _avroOverrideFactory.emitExceptionIfThereAreErrors(); if (avroOverride != null) { if (avroOverride.getAccessCount() == 1) { _builder.writeData(avroOverride.getAvroSchemaDataMap()); encodedCustomAvroSchema = true; } else { _builder.writeString(avroOverride.getAvroSchemaFullName()); encodedCustomAvroSchema = true; } } return encodedCustomAvroSchema; }
/** * Encode a field's default to an Avro-compliant schema. * * Special handling is required if the translated default value * is a union value whose value is not null. In this case, * the default value includes the member type discriminator, * special handling required to comply with Avro specification * requires that (a) the member type to be the 1st member of the * union's member type list and (b) the discriminator not be * included in the default value. * * @param field providing the default value to encode. * @throws IOException if there is an error while encoding. */ @Override protected void encodeFieldDefault(RecordDataSchema.Field field) throws IOException { FieldOverride defaultValueOverride = _fieldOverridesProvider.getDefaultValueOverride(field); // if field is optional, it must have a default value - either Data.NULL or translated value assert(!field.getOptional() || (defaultValueOverride != null && defaultValueOverride.getValue() != null)); boolean isTranslatedUnionMember = (Boolean.TRUE == field.getProperties().get(SchemaTranslator.TRANSLATED_UNION_MEMBER_PROPERTY)); // Set the default value only for fields that are not translated from Pegasus union members. if ((defaultValueOverride != null && defaultValueOverride.getValue() != null) && !isTranslatedUnionMember) { _builder.writeFieldName(DEFAULT_KEY); _builder.writeData(defaultValueOverride.getValue()); } }