Skip to content

Commit 6ffc0cf

Browse files
committed
Fix #95
1 parent 35e255f commit 6ffc0cf

File tree

3 files changed

+28
-0
lines changed

3 files changed

+28
-0
lines changed

avro/src/main/java/com/fasterxml/jackson/dataformat/avro/AvroSchema.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff 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;

avro/src/test/java/com/fasterxml/jackson/dataformat/avro/schemaev/SimpleEvolutionTest.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff 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
}

release-notes/VERSION

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ Modules:
1111

1212
2.9.0 (not yet released)
1313

14+
#95: Add new method, `withUnsafeReaderSchema` in `AvroSchema` to allow avoiding verification exception
15+
1416
2.8.9.1 (not yet released)
1517

1618
#94: Should _ensureRoom in ProtobufGenerator.writeString()

0 commit comments

Comments
 (0)