/** * When user specified protobuffer class in configuration, It should replace class specified in * header. */ @Test public void testCustomProtoClass() throws Exception { FirstCustomClassMessage.Builder inputMessage; inputMessage = FirstCustomClassMessage.newBuilder(); inputMessage.setString("writtenString"); Path outputPath = new WriteUsingMR().write(new Message[] {inputMessage.build()}); ReadUsingMR readUsingMR = new ReadUsingMR(); String customClass = SecondCustomClassMessage.class.getName(); ProtoReadSupport.setProtobufClass(readUsingMR.getConfiguration(), customClass); List<Message> result = readUsingMR.read(outputPath); assertEquals(1, result.size()); Message msg = result.get(0); assertFalse("Class from header returned.", msg instanceof FirstCustomClassMessage); assertTrue("Custom class was not used", msg instanceof SecondCustomClassMessage); String stringValue; stringValue = ((SecondCustomClassMessage) msg).getString(); assertEquals("writtenString", stringValue); }