package org.ebayopensource.turmeric.tools.codegen.fastserformat.protobuf.tag; import java.io.InputStream; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; public class ProtobufMetadataFileReader implements ProtobufMetadataReader { @Override public Map<String, Integer> read(InputStream inputStream) { List<String> readFile = FileHelper.readFile(inputStream); int metadataStartIndex = FileHelper.getMetadataStartIndex(readFile); if (metadataStartIndex == -1) { return Collections.emptyMap(); } int size = readFile.size(); Map<String, Integer> internalData = new HashMap<String, Integer>(); metadataStartIndex++; for (int counter = metadataStartIndex; counter < size; counter++) { String line = readFile.get(counter); if (line.contains(ProtobufMetadataConstants.S_PMD_END)) { break; } if (!line.contains(ProtobufMetadataConstants.S_COMMENT)) { throw new RuntimeException("PMD metadata content is not continuous. The .proto file is corrupted."); } line = line.replaceAll(ProtobufMetadataConstants.S_COMMENT, ""); String[] split = line.split("="); String key = split[0]; Integer value = new Integer(split[1]); if (internalData.containsKey(key)) { throw new RuntimeException("Proto tag Metadata information contains duplicate tag assignments. Key: " + key); } internalData.put(key, value); } return internalData; } }