public AvroSchemaEventType NewEventTypeFromNormalized( EventTypeMetadata metadata, string eventTypeName, int typeId, EventAdapterService eventAdapterService, IDictionary <string, object> properties, Attribute[] annotations, ConfigurationEventTypeAvro optionalConfig, EventType[] superTypes, ICollection <EventType> deepSuperTypes, string statementName, string engineURI) { JArray assembler = new JArray(); //FieldAssembler<Schema> assembler = Record(eventTypeName).Fields(); // add supertypes first so the positions are comparable var added = new HashSet <string>(); if (superTypes != null) { for (var i = 0; i < superTypes.Length; i++) { var superType = (AvroEventType)superTypes[i]; foreach (Field field in superType.SchemaAvro.GetFields()) { if (properties.ContainsKey(field.Name) || added.Contains(field.Name)) { continue; } added.Add(field.Name); assembler.Add(TypeBuilder.Field(field.Name, field.Schema)); //assembler.Name(field.Name).Type(field.Schema).NoDefault(); } } } foreach (var prop in properties) { if (!added.Contains(prop.Key)) { AvroSchemaUtil.AssembleField( prop.Key, prop.Value, assembler, annotations, _avroSettings, eventAdapterService, statementName, engineURI, _optionalTypeMapper); added.Add(prop.Key); } } var schema = SchemaBuilder.Record( eventTypeName, assembler); //Schema schema = assembler.EndRecord(); return(MakeType( metadata, eventTypeName, typeId, eventAdapterService, schema, optionalConfig, superTypes, deepSuperTypes)); }
private Schema Assemble( object value, Attribute[] annotations, ConfigurationCommonEventTypeMeta.AvroSettingsConfig avroSettings, EventTypeNameResolver eventTypeNameResolver) { var fields = new JArray(); AvroSchemaUtil.AssembleField("somefield", value, fields, annotations, avroSettings, eventTypeNameResolver, "stmtname", null); var schema = SchemaBuilder.Record("myrecord", fields); return(schema.GetField("somefield").Schema); }