File tree 3 files changed +27
-0
lines changed
main/java/com/fasterxml/jackson/dataformat/avro
test/java/com/fasterxml/jackson/dataformat/avro/schemaev
3 files changed +27
-0
lines changed Original file line number Diff line number Diff line change @@ -90,6 +90,28 @@ public AvroSchema withReaderSchema(AvroSchema readerSchema)
90
90
return Resolving .create (w , r );
91
91
}
92
92
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
+
93
115
@ Override
94
116
public String getSchemaType () {
95
117
return TYPE_ID ;
Original file line number Diff line number Diff line change @@ -316,5 +316,9 @@ public void testFailNewFieldNoDefault() throws Exception
316
316
verifyException (e , "Data encoded using writer schema" );
317
317
verifyException (e , "will or may fail to decode using reader schema" );
318
318
}
319
+
320
+ // However... should be possible with unsafe alternative
321
+ AvroSchema risky = srcSchema .withUnsafeReaderSchema (dstSchema );
322
+ assertNotNull (risky );
319
323
}
320
324
}
Original file line number Diff line number Diff line change @@ -28,6 +28,7 @@ Modules:
28
28
(reported by Eldad R)
29
29
#69 (avro): Add support for `@AvroEncode` annotation
30
30
#79 (proto): Fix wire type for packed arrays
31
+ #95: Add new method, `withUnsafeReaderSchema` in `AvroSchema` to allow avoiding verification exception
31
32
- [avro] Upgrade `avro-core` dep from 1.7.7 to 1.8.1
32
33
33
34
2.8.9.1 (not yet released)
You can’t perform that action at this time.
0 commit comments