### Question:
HortonworksAttributeSchemaReferenceWriter implements SchemaAccessWriter { @Override public Map<String, String> getAttributes(final RecordSchema schema) { final Map<String, String> attributes = new HashMap<>(4); final SchemaIdentifier id = schema.getIdentifier(); final Long schemaId = id.getIdentifier().getAsLong(); final Integer schemaVersion = id.getVersion().getAsInt(); attributes.put(HortonworksAttributeSchemaReferenceStrategy.SCHEMA_ID_ATTRIBUTE, String.valueOf(schemaId)); attributes.put(HortonworksAttributeSchemaReferenceStrategy.SCHEMA_VERSION_ATTRIBUTE, String.valueOf(schemaVersion)); attributes.put(HortonworksAttributeSchemaReferenceStrategy.SCHEMA_PROTOCOL_VERSION_ATTRIBUTE, String.valueOf(LATEST_PROTOCOL_VERSION)); if (id.getBranch().isPresent()) { attributes.put(SCHEMA_BRANCH_ATTRIBUTE, id.getBranch().get()); } return attributes; }  @Override void writeHeader(RecordSchema schema, OutputStream out); @Override Map<String, String> getAttributes(final RecordSchema schema); @Override void validateSchema(final RecordSchema schema); @Override Set<SchemaField> getRequiredSchemaFields();  }### Answer:
@Test public void testGetAttributesWithoutBranch() { final SchemaIdentifier schemaIdentifier = SchemaIdentifier.builder().id(123456L).version(2).build(); final RecordSchema recordSchema = createRecordSchema(schemaIdentifier); final SchemaAccessWriter schemaAccessWriter = new HortonworksAttributeSchemaReferenceWriter(); final Map<String,String> attributes = schemaAccessWriter.getAttributes(recordSchema); Assert.assertEquals(3, attributes.size()); Assert.assertEquals(String.valueOf(schemaIdentifier.getIdentifier().getAsLong()), attributes.get(HortonworksAttributeSchemaReferenceStrategy.SCHEMA_ID_ATTRIBUTE)); Assert.assertEquals(String.valueOf(schemaIdentifier.getVersion().getAsInt()), attributes.get(HortonworksAttributeSchemaReferenceStrategy.SCHEMA_VERSION_ATTRIBUTE)); Assert.assertEquals(String.valueOf(HortonworksAttributeSchemaReferenceWriter.LATEST_PROTOCOL_VERSION), attributes.get(HortonworksAttributeSchemaReferenceStrategy.SCHEMA_PROTOCOL_VERSION_ATTRIBUTE)); }
@Test public void testGetAttributesWithBranch() { final SchemaIdentifier schemaIdentifier = SchemaIdentifier.builder().id(123456L).version(2).branch("foo").build(); final RecordSchema recordSchema = createRecordSchema(schemaIdentifier); final SchemaAccessWriter schemaAccessWriter = new HortonworksAttributeSchemaReferenceWriter(); final Map<String,String> attributes = schemaAccessWriter.getAttributes(recordSchema); Assert.assertEquals(4, attributes.size()); Assert.assertEquals(String.valueOf(schemaIdentifier.getIdentifier().getAsLong()), attributes.get(HortonworksAttributeSchemaReferenceStrategy.SCHEMA_ID_ATTRIBUTE)); Assert.assertEquals(String.valueOf(schemaIdentifier.getVersion().getAsInt()), attributes.get(HortonworksAttributeSchemaReferenceStrategy.SCHEMA_VERSION_ATTRIBUTE)); Assert.assertEquals(String.valueOf(HortonworksAttributeSchemaReferenceWriter.LATEST_PROTOCOL_VERSION), attributes.get(HortonworksAttributeSchemaReferenceStrategy.SCHEMA_PROTOCOL_VERSION_ATTRIBUTE)); Assert.assertEquals("foo", attributes.get(HortonworksAttributeSchemaReferenceWriter.SCHEMA_BRANCH_ATTRIBUTE)); }