fix(arvoparser): Support array as root schema type#226
Open
thanhvg wants to merge 1 commit intoImFlog:masterfrom
Open
fix(arvoparser): Support array as root schema type#226thanhvg wants to merge 1 commit intoImFlog:masterfrom
thanhvg wants to merge 1 commit intoImFlog:masterfrom
Conversation
This commit adds support for array as root schema type for Avro schemas. The AvroSchemaParser now handles cases where the root schema is an array containing a single JSONObject. The loadMainSchema function has been updated to coerce the array into a json object with type array and items set to the JSONObject. The resolveLocalReferences function has been updated to handle the case where the root schema is an array and return the resolved schema as an array. Added tests to verify the new functionality.
ImFlog
reviewed
Oct 27, 2025
Comment on lines
+222
to
+225
| if (parsedInput.length() == 1) { | ||
| val mySchema = JSONObject(); | ||
| mySchema.put("type", "array") | ||
| mySchema.put("items", parsedInput.get(0)) |
Owner
There was a problem hiding this comment.
From what I see in the spec, it allows multiple primitive values. Things like ["string", "null"] is valid.
Comment on lines
+228
to
+234
| } else { | ||
| throw IllegalArgumentException("Invalid schema format: array must contain exactly one JSONObject") | ||
| } | ||
| } | ||
| else -> { | ||
| throw IllegalArgumentException("Invalid schema format: must be a JSONObject or an array containing a JSONObject") | ||
| } |
Owner
There was a problem hiding this comment.
Not sure about this based on the specifications.
For me, we could have multiple items in the array and that represent an union, could be primitive types or objects.
WDYT ?
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This commit adds support for array as root schema type for Avro schemas. The AvroSchemaParser now handles cases where the root schema is an array containing a single item. The loadMainSchema function has been updated to coerce the array into a json object with type array and items set to the JSONObject. The resolveLocalReferences function has been updated to handle the case where the root schema is an array and return the resolved schema as an array. Added tests to verify the new functionality.
In an old version of this plugin a few versions ago. We were able to register a subject of array type as simple as
[ foo]. This MR brings it back for arvo parser.The change is a bit hacky because I had to work around the limitation of
org.json. But the good news is it is self contained insideAvroSchemaParserwhich is hopefully not too bad.