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));
        }
示例#2
0
        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);
        }