File tree Expand file tree Collapse file tree 3 files changed +28
-0
lines changed
main/java/com/fasterxml/jackson/dataformat/avro
test/java/com/fasterxml/jackson/dataformat/avro/schemaev Expand file tree Collapse file tree 3 files changed +28
-0
lines changed Original file line number Diff line number Diff line change @@ -90,6 +90,28 @@ public AvroSchema withReaderSchema(AvroSchema readerSchema)
9090 return Resolving .create (w , r );
9191 }
9292
93+ /**
94+ * Similar to {@link #withReaderSchema} but will NOT verify compatibility of schemas:
95+ * this means that certain problems (such as missing default value for a newly added
96+ * field) that would be caught at construction may be surfaced later when using
97+ * schema. This is, however, sometimes necessary to work around potential BUT NOT ACTUAL
98+ * problems.
99+ *
100+ * @since 2.9
101+ */
102+ public AvroSchema withUnsafeReaderSchema (AvroSchema readerSchema )
103+ throws JsonProcessingException
104+ {
105+ Schema w = _writerSchema ;
106+ Schema r = readerSchema .getAvroSchema ();
107+
108+ if (r .equals (w )) {
109+ return this ;
110+ }
111+ w = Schema .applyAliases (w , r );
112+ return Resolving .create (w , r );
113+ }
114+
93115 @ Override
94116 public String getSchemaType () {
95117 return TYPE_ID ;
Original file line number Diff line number Diff line change @@ -179,5 +179,9 @@ public void testFailNewFieldNoDefault() throws Exception
179179 verifyException (e , "Data encoded using writer schema" );
180180 verifyException (e , "will or may fail to decode using reader schema" );
181181 }
182+
183+ // However... should be possible with unsafe alternative
184+ AvroSchema risky = srcSchema .withUnsafeReaderSchema (dstSchema );
185+ assertNotNull (risky );
182186 }
183187}
Original file line number Diff line number Diff line change @@ -11,6 +11,8 @@ Modules:
1111
12122.9.0 (not yet released)
1313
14+ #95: Add new method, `withUnsafeReaderSchema` in `AvroSchema` to allow avoiding verification exception
15+
14162.8.9.1 (not yet released)
1517
1618#94: Should _ensureRoom in ProtobufGenerator.writeString()
You can’t perform that action at this time.
0 commit comments