package com.sumologic.client; import org.apache.log4j.Logger; import com.sumologic.client.implementations.SumologicEmitter; import com.sumologic.client.model.SimpleKinesisMessageModel; import com.amazonaws.services.kinesis.connectors.interfaces.IKinesisConnectorPipeline; import com.amazonaws.services.kinesis.connectors.KinesisConnectorConfiguration; import com.amazonaws.services.kinesis.connectors.impl.BasicMemoryBuffer; import com.amazonaws.services.kinesis.connectors.impl.AllPassFilter; import com.amazonaws.services.kinesis.connectors.interfaces.IEmitter; import com.amazonaws.services.kinesis.connectors.interfaces.IBuffer; import com.amazonaws.services.kinesis.connectors.interfaces.ITransformer; import com.amazonaws.services.kinesis.connectors.interfaces.IFilter; /** * The Pipeline used by the Sumologic. Processes KinesisMessageModel records in JSON String * format. Uses: * <ul> * <li>{@link SumologicEmitter}</li> * <li>{@link BasicMemoryBuffer}</li> * <li>{@link CloudWatchMessageModelSumologicTransformer}</li> * <li>{@link AllPassFilter}</li> * </ul> */ public class SumologicMessageModelPipeline implements IKinesisConnectorPipeline<SimpleKinesisMessageModel, String> { private static final Logger LOG = Logger.getLogger(SumologicMessageModelPipeline.class.getName()); @Override public IEmitter<String> getEmitter(KinesisConnectorConfiguration configuration) { return new SumologicEmitter(configuration); } @Override public IBuffer<SimpleKinesisMessageModel> getBuffer(KinesisConnectorConfiguration configuration) { return new BasicMemoryBuffer<SimpleKinesisMessageModel>(configuration); } @Override public ITransformer<SimpleKinesisMessageModel, String> getTransformer(KinesisConnectorConfiguration configuration) { // Load specified class String argClass = ((KinesisConnectorForSumologicConfiguration)configuration).TRANSFORMER_CLASS; String className = "com.sumologic.client."+argClass; ClassLoader classLoader = SumologicMessageModelPipeline.class.getClassLoader(); Class ModelClass = null; try { ModelClass = classLoader.loadClass(className); ITransformer<SimpleKinesisMessageModel, String> ITransformerObject = (ITransformer<SimpleKinesisMessageModel, String>)ModelClass.newInstance(); LOG.info("Using transformer: "+ITransformerObject.getClass().getName()); return ITransformerObject; } catch (ClassNotFoundException e) { LOG.error("Class not found: "+className+" error: "+e.getMessage()); } catch (InstantiationException e) { LOG.error("Class not found: "+className+" error: "+e.getMessage()); } catch (IllegalAccessException e) { LOG.error("Class not found: "+className+" error: "+e.getMessage()); } return new DefaultKinesisMessageModelSumologicTransformer(); } @Override public IFilter<SimpleKinesisMessageModel> getFilter(KinesisConnectorConfiguration configuration) { return new AllPassFilter<SimpleKinesisMessageModel>(); } }