VersionedSchemaSet { void updateMd5Index(VersionedSchema schema, SchemaId id) { if (_rehash) { Schema avroSchema = schema.getSchema(); Set<SchemaId> md5Ids = new HashSet<SchemaId>(MAX_REHASH_NUM); md5Ids.add(id); for (int i = 0, numElems = 0; i < MAX_REHASH_NUM && numElems != md5Ids.size(); ++i) { _log.info("Registering md5 " + id + " --> name=" + schema.getSchemaBaseName() + " version=" + schema.getVersion()); _idToSchema.put(id, schema); numElems = md5Ids.size(); avroSchema = Schema.parse(avroSchema.toString()); id = SchemaId.createWithMd5(avroSchema); md5Ids.add(id); } } else { _log.info("Registering md5 " + id + " --> name=" + schema.getSchemaBaseName() + " version=" + schema.getVersion()); _idToSchema.put(id, schema); } } VersionedSchemaSet();  VersionedSchemaSet(boolean rehash); int size(); boolean has(SchemaId id); VersionedSchema getById(SchemaId id); VersionedSchema getLatestVersionByName(String schemaBaseName); SortedMap<VersionedSchemaId, VersionedSchema> getAllVersionsByName(String schemaBaseName); Map<SchemaId, VersionedSchema> getAllVersionsWithSchemaId(String sourceName); VersionedSchema getSchemaByNameVersion(String baseName, short version); VersionedSchema getSchema(VersionedSchemaId versionedSchemaId); boolean add(String name, short version, String schemaStr); boolean add(String name, short version, SchemaId id, String schemaStr, boolean keepOrigStr); boolean add(String name, short version, SchemaId id, String schemaStr); boolean add(VersionedSchema schema); @Override String toString(); Set<String> getSchemaBaseNames(); void clear(); Map<SchemaId, VersionedSchema> getIdToSchema();  }
@Test public void testUpdateMd5Index() { final String schemaStr = "{\"type\":\"record\",\"name\":\"A\",\"fields\":[" + "{\"name\":\"J\",\"type\":\"string\",\"J1\":\"V1\",\"indexType\":\"V2\",\"d\":" + "\"V3\",\"J3\":\"10000\"}]}"; VersionedSchemaSet vschemaSet = new VersionedSchemaSet(true); vschemaSet.add("testSchema", (short)1, schemaStr); Assert.assertEquals(vschemaSet.getIdToSchema().size(), 2); vschemaSet.add("TestSchema", (short)3, TEST_SCHEMA3_TEXT); Assert.assertEquals(vschemaSet.getIdToSchema().size(), 3); for (Map.Entry<SchemaId, VersionedSchema> e: vschemaSet.getIdToSchema().entrySet()) { System.out.println(String.format("ids[%s] -> %s.%d", e.getKey(), e.getValue().getSchemaBaseName(), e.getValue().getVersion())); } }