/** * Encode the specified {@link DataSchema}. * @param schema to encode. * @throws IOException if there is an error while encoding. */ public void encode(DataSchema schema) throws IOException { encode(schema, true); }
_builder.writeFieldName(ITEMS_KEY); ArrayDataSchema arrayDataSchema = (ArrayDataSchema) schema; encode(arrayDataSchema.getItems(), arrayDataSchema.isItemsDeclaredInline()); encodeProperties(schema); _builder.writeEndObject(); _builder.writeFieldName(VALUES_KEY); MapDataSchema mapDataSchema = (MapDataSchema) schema; encode(mapDataSchema.getValues(), mapDataSchema.isValuesDeclaredInline()); encodeProperties(schema); _builder.writeEndObject();
_builder.writeFieldName(REF_KEY); TyperefDataSchema typerefDataSchema = (TyperefDataSchema) schema; encode(typerefDataSchema.getRef(), typerefDataSchema.isRefDeclaredInline()); break; case ENUM:
/** * Encode a {@link DataSchema}. * * Special handling is required for typeref's. All typeref's are * de-referenced to the actual type. * * @param schema to encode. * @throws IOException */ @Override public void encode(DataSchema schema) throws IOException { if (encodeCustomAvroSchema(schema) == false) { super.encode(schema.getDereferencedDataSchema()); } }
/** * Encode a {@link DataSchema}. * * Special handling is required for typeref's. All typeref's are * de-referenced to the actual type. * * @param schema to encode. * @throws IOException */ @Override protected void encode(DataSchema schema, boolean originallyInlined) throws IOException { if (encodeCustomAvroSchema(schema) == false) { super.encode(schema.getDereferencedDataSchema(), originallyInlined); } }
/** * Encode a field's type (i.e. {@link DataSchema}. * * @param field providing the type to encode. * @throws IOException if there is an error while encoding. */ protected void encodeFieldType(RecordDataSchema.Field field) throws IOException { _builder.writeFieldName(TYPE_KEY); DataSchema fieldSchema = field.getType(); encode(fieldSchema, field.isDeclaredInline()); }
private void writeIncludes(RecordDataSchema recordDataSchema) throws IOException { _builder.writeFieldName(INCLUDE_KEY); _builder.writeStartArray(); for (NamedDataSchema includedSchema : recordDataSchema.getInclude()) { encode(includedSchema); } _builder.writeEndArray(); }
private static String encode(DataSchema schema, String format) throws IOException { if (format.equals(PdlSchemaParser.FILETYPE)) { StringWriter writer = new StringWriter(); SchemaToPdlEncoder encoder = new SchemaToPdlEncoder(writer); encoder.setTypeReferenceFormat(AbstractSchemaEncoder.TypeReferenceFormat.PRESERVE); encoder.encode(schema); return writer.toString(); } else if (format.equals(SchemaParser.FILETYPE)) { JsonBuilder.Pretty pretty = JsonBuilder.Pretty.INDENTED; JsonBuilder builder = new JsonBuilder(pretty); try { SchemaToJsonEncoder encoder = new SchemaToJsonEncoder(builder, AbstractSchemaEncoder.TypeReferenceFormat.PRESERVE); encoder.encode(schema); return builder.result(); } finally { builder.closeQuietly(); } } else { throw new IllegalArgumentException("Unsupported format: " + format); } }
/** * Encode a {@link DataSchema} to a JSON encoded string. * * @param schema is the {@link DataSchema} to build a JSON encoded output for. * @param pretty is the pretty printing mode. * @return the JSON encoded string representing the {@link DataSchema}. */ public static String schemaToJson(DataSchema schema, JsonBuilder.Pretty pretty) { JsonBuilder builder = null; try { builder = new JsonBuilder(pretty); final SchemaToJsonEncoder encoder = new SchemaToJsonEncoder(builder); encoder.encode(schema); return builder.result(); } catch (IOException exc) { return exc.getMessage(); } finally { if (builder != null) { builder.closeQuietly(); } } }
for (DataSchema schema : schemas) encoder.encode(schema);
public File writeFile(File outdirFile, String fileName) throws IOException { fileName += RestConstants.SNAPSHOT_FILENAME_EXTENTION; final File file = new File(outdirFile, fileName); FileOutputStream fileOutputStream = new FileOutputStream(file); JsonBuilder jsonBuilder = new JsonBuilder(JsonBuilder.Pretty.INDENTED); SchemaToJsonEncoder encoder = new SchemaToJsonEncoder(jsonBuilder); jsonBuilder.writeStartObject(); jsonBuilder.writeFieldName(Snapshot.MODELS_KEY); jsonBuilder.writeStartArray(); List<NamedDataSchema> models = generateModelList(); models.sort(Comparator.comparing(NamedDataSchema::getFullName)); for(DataSchema model : models){ encoder.encode(model); } jsonBuilder.writeEndArray(); jsonBuilder.writeFieldName(Snapshot.SCHEMA_KEY); jsonBuilder.writeDataTemplate(_topLevelSchema, true); jsonBuilder.writeEndObject(); try { fileOutputStream.write(jsonBuilder.result().getBytes()); } finally { fileOutputStream.close(); jsonBuilder.close(); } return file; }
_builder.writeFieldName(SchemaTranslator.SCHEMA_PROPERTY); SchemaToJsonEncoder schemaToJsonEncoder = new SchemaToJsonEncoder(_builder); schemaToJsonEncoder.encode(schema); _builder.writeFieldName(SchemaTranslator.OPTIONAL_DEFAULT_MODE_PROPERTY); _builder.writeString(_options.getOptionalDefaultMode().toString());
encoder.encode(schemaToEncode); return builder.result();
/*package*/ static String buildDataSchemaType(DataSchema schema) { if (schema instanceof PrimitiveDataSchema || schema instanceof NamedDataSchema) { return schema.getUnionMemberKey(); } JsonBuilder builder = null; try { builder = new JsonBuilder(JsonBuilder.Pretty.SPACES); final SchemaToJsonEncoder encoder = new SchemaToJsonEncoder(builder, AbstractSchemaEncoder.TypeReferenceFormat.MINIMIZE); encoder.encode(schema); return builder.result(); } catch (IOException e) { throw new RestLiInternalException("could not encode schema for '" + schema.toString() + "'", e); } finally { if (builder != null) { builder.closeQuietly(); } } }
/** * Encode a specific {@link com.linkedin.data.schema.UnionDataSchema.Member} of a union. * * @param member The specific union member that needs to be encoded. * @throws IOException if there is an error while encoding. */ protected void encodeUnionMember(UnionDataSchema.Member member) throws IOException { if (member.hasAlias()) { _builder.writeStartObject(); // alias _builder.writeStringField(ALIAS_KEY, member.getAlias(), true); // type _builder.writeFieldName(TYPE_KEY); encode(member.getType(), member.isDeclaredInline()); // doc _builder.writeStringField(DOC_KEY, member.getDoc(), false); // properties _builder.writeProperties(member.getProperties()); _builder.writeEndObject(); } else { // for member without aliases, encode the type encode(member.getType(), member.isDeclaredInline()); } }