[
https://issues.apache.org/jira/browse/AVRO-3404?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Oscar Westra van Holthe - Kind updated AVRO-3404:
-------------------------------------------------
Labels: pull-request-available (was: )
> Extend the IDL syntax to serve as a .avsc equivalent as well
> ------------------------------------------------------------
>
> Key: AVRO-3404
> URL: https://issues.apache.org/jira/browse/AVRO-3404
> Project: Apache Avro
> Issue Type: Improvement
> Components: build, dependencies, java
> Reporter: Oscar Westra van Holthe - Kind
> Assignee: Oscar Westra van Holthe - Kind
> Priority: Major
> Labels: pull-request-available
>
> The Avro IDL format is not widely adopted, as it yields a protocol (most
> people use schemas only). To remedy this, I propose to extend the IDL syntax.
> Future IDL files will have two options:
> # Use the existing syntax to define a protocol
> Parsing such a file yields a protocol and a collection of named schemas (that
> can also be found in the protocol object)
> # Use the syntax below to define a schema
> Parsing such a file yields a collection of named schemas and optionally a
> "main schema", which can be a named or an anonymous schema.
> Proposed syntax:
> {code:none}
> // Required: the default namespace for the whole file
> // (in the existing syntax, the namespace of the protocol has the same
> function)
> namespace my.name.space;
> // Optional: a main schema to parse the file as a .avsc equivalent
> schema array<Message>;
> // Below here are imports and named schemas in any order
> /* Import rules for the new syntax:
> - the namespace of the imported named types is determined by the imported file
> (same as for the existing syntax)
> - when importing idl or protocol files, only the named schemas are imported
> (as this syntax supports only these)
> */
> import idl "common.avdl";
> /**
> * A message to communicate.
> */
> record Message {
> array<Header> headers;
> string? title = null; // Idea: add null as default value, unless there's an
> explicit default value
> string message;
> timestamp_ms sendTime;
> }
> {code}
--
This message was sent by Atlassian Jira
(v8.20.1#820001)