/** * set the serde for this appender. It looks for the stream serde first, then system serde. * If still can not get the serde, throws exceptions. * * @param log4jSystemConfig log4jSystemConfig for this appender * @param systemName name of the system * @param streamName name of the stream */ private void setSerde(Log4jSystemConfig log4jSystemConfig, String systemName, String streamName) { String serdeClass = LoggingEventJsonSerdeFactory.class.getCanonicalName(); String serdeName = log4jSystemConfig.getStreamSerdeName(systemName, streamName); if (serdeName != null) { serdeClass = log4jSystemConfig.getSerdeClass(serdeName); } if (serdeClass != null) { SerdeFactory<LogEvent> serdeFactory = Util.getObj(serdeClass, SerdeFactory.class); serde = serdeFactory.getSerde(systemName, config); } else { String serdeKey = String.format(SerializerConfig.SERDE_FACTORY_CLASS(), serdeName); throw new SamzaException("Can not find serializers class for key '" + serdeName + "'. Please specify " + serdeKey + " property"); } }
/** * set the serde for this appender. It looks for the stream serde first, then system serde. * If still can not get the serde, throws exceptions. * * @param log4jSystemConfig log4jSystemConfig for this appender * @param systemName name of the system * @param streamName name of the stream */ private void setSerde(Log4jSystemConfig log4jSystemConfig, String systemName, String streamName) { String serdeClass = LoggingEventJsonSerdeFactory.class.getCanonicalName(); String serdeName = log4jSystemConfig.getStreamSerdeName(systemName, streamName); if (serdeName != null) { serdeClass = log4jSystemConfig.getSerdeClass(serdeName); } if (serdeClass != null) { SerdeFactory<LoggingEvent> serdeFactory = Util.getObj(serdeClass, SerdeFactory.class); serde = serdeFactory.getSerde(systemName, config); } else { String serdeKey = String.format(SerializerConfig.SERDE_FACTORY_CLASS(), serdeName); throw new SamzaException("Can not find serializers class for key '" + serdeName + "'. Please specify " + serdeKey + " property"); } }
@Test public void testGetSerdeClass() { Map<String, String> map = new HashMap<String, String>(); Log4jSystemConfig log4jSystemConfig = new Log4jSystemConfig(new MapConfig(map)); // get null assertNull(log4jSystemConfig.getSerdeClass("otherName")); // get serde map.put("serializers.registry.log4j.class", "someClass"); log4jSystemConfig = new Log4jSystemConfig(new MapConfig(map)); assertEquals("someClass", log4jSystemConfig.getSerdeClass("log4j")); }