[ https://issues.apache.org/jira/browse/AVRO-3560?focusedWorklogId=786981&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-786981 ]
ASF GitHub Bot logged work on AVRO-3560: ---------------------------------------- Author: ASF GitHub Bot Created on: 01/Jul/22 08:11 Start Date: 01/Jul/22 08:11 Worklog Time Spent: 10m Work Description: KalleOlaviNiemitalo commented on code in PR #1748: URL: https://github.com/apache/avro/pull/1748#discussion_r911725171 ########## lang/java/avro/src/main/java/org/apache/avro/Schema.java: ########## @@ -1454,19 +1456,37 @@ public Schema parse(String s, String... more) { */ public Schema parse(String s) { try { - return parse(FACTORY.createParser(s)); + return parse(FACTORY.createParser(s), false); } catch (IOException e) { throw new SchemaParseException(e); } } - private Schema parse(JsonParser parser) throws IOException { + private Schema parse(JsonParser parser, boolean allowDanglingContent) throws IOException { boolean saved = validateNames.get(); boolean savedValidateDefaults = VALIDATE_DEFAULTS.get(); try { validateNames.set(validate); VALIDATE_DEFAULTS.set(validateDefaults); - return Schema.parse(MAPPER.readTree(parser), names); + JsonNode jsonNode = MAPPER.readTree(parser); + Schema schema = Schema.parse(jsonNode, names); + if (!allowDanglingContent) { + StringWriter danglingWriter = new StringWriter(); + parser.releaseBuffered(danglingWriter); + String dangling = danglingWriter.toString().trim(); + if (dangling.isEmpty()) { + // releaseBuffered(Writer) above works in case the source was character-based + // (ex. a String). releaseBuffered(OutputStream) covers the case that the + // source was byte-based (ex. a File) + ByteArrayOutputStream danglingOutputStream = new ByteArrayOutputStream(); + parser.releaseBuffered(danglingOutputStream); + dangling = new String(danglingOutputStream.toByteArray(), StandardCharsets.UTF_8); Review Comment: Should you trim this too? Issue Time Tracking ------------------- Worklog Id: (was: 786981) Time Spent: 1h 20m (was: 1h 10m) > avro ignores input after end of avsc json > ----------------------------------------- > > Key: AVRO-3560 > URL: https://issues.apache.org/jira/browse/AVRO-3560 > Project: Apache Avro > Issue Type: Bug > Components: java > Affects Versions: 1.11.0 > Reporter: Radai Rosenblatt > Assignee: Radai Rosenblatt > Priority: Major > Labels: pull-request-available > Time Spent: 1h 20m > Remaining Estimate: 0h > > try the following unit test: > {code} > @Test > public void littleBobbySchemas() throws Exception { > Schema.Parser parser = new Schema.Parser(); > parser.setValidate(true); > parser.setValidateDefaults(true); > Schema schema = parser.parse("{\"type\": \"string\"}; DROP TABLE > STUDENTS"); > Assert.assertNotNull(schema); > } > {code} -- This message was sent by Atlassian Jira (v8.20.10#820010)