[ https://issues.apache.org/jira/browse/AVRO-3520?focusedWorklogId=787663&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-787663 ]
ASF GitHub Bot logged work on AVRO-3520: ---------------------------------------- Author: ASF GitHub Bot Created on: 04/Jul/22 17:02 Start Date: 04/Jul/22 17:02 Worklog Time Spent: 10m Work Description: github-code-scanning[bot] commented on code in PR #1692: URL: https://github.com/apache/avro/pull/1692#discussion_r913153611 ########## lang/java/avro/src/test/java/org/apache/avro/reflect/TestReflectCustomEncoderFieldAccess.java: ########## @@ -0,0 +1,158 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.avro.reflect; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; + +import org.apache.avro.Schema; +import org.apache.avro.file.CodecFactory; +import org.apache.avro.file.DataFileStream; +import org.apache.avro.file.DataFileWriter; +import org.apache.avro.io.DatumReader; +import org.apache.avro.io.Decoder; +import org.apache.avro.io.Encoder; +import org.junit.Test; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.UncheckedIOException; +import java.util.Arrays; +import java.util.Collections; + +public class TestReflectCustomEncoderFieldAccess { + + @Test + public void testReadSchemaIsSet() throws IOException { + Custom in = new Custom("hello", "world"); + byte[] encoded = write(in); + + CustomEncoder.SCHEMA = CustomEncoder.v2Schema; + Custom decoded = read(encoded); + assertNotNull(decoded); + assertEquals("hello", decoded.v1Field); + assertNull(decoded.v2Field); + + ReflectData.get().removeFromSchemaClassCache(Wrapper.class); + encoded = write(in); + + decoded = read(encoded); + assertNotNull(decoded); + assertEquals("hello", decoded.v1Field); + assertEquals("world", decoded.v2Field); + } + + private Custom read(byte[] toDecode) throws IOException { + DatumReader<Wrapper> datumReader = new ReflectDatumReader<>(); + DataFileStream<Wrapper> dataFileReader = new DataFileStream<>( + new ByteArrayInputStream(toDecode, 0, toDecode.length), datumReader); + Wrapper wrapper = null; + if (dataFileReader.hasNext()) { + wrapper = dataFileReader.next(); + } + return wrapper.custom; Review Comment: ## Dereferenced variable may be null Variable [wrapper](1) may be null here because of [this](2) assignment. [Show more details](https://github.com/apache/avro/security/code-scanning/2725) Issue Time Tracking ------------------- Worklog Id: (was: 787663) Time Spent: 20m (was: 10m) > CustomEncoding doesn't expose the read schema > --------------------------------------------- > > Key: AVRO-3520 > URL: https://issues.apache.org/jira/browse/AVRO-3520 > Project: Apache Avro > Issue Type: Bug > Components: java > Affects Versions: 1.11.0 > Reporter: Colin > Priority: Major > Labels: pull-request-available > Attachments: patchTest.txt > > Time Spent: 20m > Remaining Estimate: 0h > > Currently it is not possible to detect a schema change when using > `CustomEncoding<T>`. -- This message was sent by Atlassian Jira (v8.20.10#820010)