/** * Validates each of a set of reader schemas against each of a set of writer schemas. * * @param readerSchemas the set of reader schemas to validate. * @param writerSchemas the set of writer schemas to validate. * @return a list of error messages corresponding to each invalid combination of a reader and * writer schema. Returns an empty list if all reader and writers schemas are compatible. */ private static List<String> validateReaderWriterSchemas( List<Schema> readerSchemas, List<Schema> writerSchemas) { final List<String> incompatabilityMessages = Lists.newArrayList(); for (Schema readerSchema : readerSchemas) { // Check that each reader schema can read records written by all writer schemas. final SchemaSetCompatibility compat = AvroUtils.checkReaderCompatibility(readerSchema, writerSchemas.iterator()); if (compat.getType() == SchemaCompatibilityType.INCOMPATIBLE) { for (SchemaPairCompatibility pairCompat : compat.getCauses()) { if (pairCompat.getType() == SchemaCompatibilityType.INCOMPATIBLE) { incompatabilityMessages.add( String.format("Reader schema: %s is incompatible with writer schema: %s.", pairCompat.getReader(), pairCompat.getWriter())); } } } } return incompatabilityMessages; }