private RecordDataSchema parseRecord( NamedTypeDeclarationContext context, RecordDeclarationContext record) throws ParseException { Name name = toName(record.name); RecordDataSchema schema = new RecordDataSchema(name, RecordDataSchema.RecordType.RECORD); bindNameToSchema(name, schema); FieldsAndIncludes fieldsAndIncludes = parseIncludes(record.beforeIncludes); boolean hasBeforeIncludes = fieldsAndIncludes.includes.size() > 0; fieldsAndIncludes.fields.addAll(parseFields(schema, record.recordDecl)); FieldsAndIncludes afterIncludes = parseIncludes(record.afterIncludes); boolean hasAfterIncludes = afterIncludes.includes.size() > 0; if (hasBeforeIncludes && hasAfterIncludes) { startErrorMessage(record) .append("Record may have includes before or after fields, but not both: ") .append(record).append(NEWLINE); } fieldsAndIncludes.addAll(afterIncludes); schema.setFields(fieldsAndIncludes.fields, errorMessageBuilder()); schema.setInclude(fieldsAndIncludes.includes); schema.setIncludesDeclaredInline(fieldsAndIncludes.includesDeclaredInline); schema.setFieldsBeforeIncludes(hasAfterIncludes); validateDefaults(schema); setProperties(context, schema); return schema; }
recordSchema.setFieldsBeforeIncludes(true);