package org.lumberjack.plugin; import com.codahale.metrics.MetricRegistry; import com.google.inject.assistedinject.Assisted; import com.google.inject.assistedinject.AssistedInject; import org.graylog2.inputs.codecs.GelfCodec; import org.graylog2.plugin.LocalMetricRegistry; import org.graylog2.plugin.ServerStatus; import org.graylog2.plugin.configuration.Configuration; import org.graylog2.plugin.inputs.MessageInput; import javax.inject.Inject; /** * This is the plugin. Your class should implement one of the existing plugin * interfaces. (i.e. AlarmCallback, MessageInput, MessageOutput) */ public class LumberjackInput extends MessageInput { private static final String NAME = "Logstash-forwarder Input"; @AssistedInject public LumberjackInput(MetricRegistry metricRegistry, @Assisted Configuration configuration, LumberjackTransport.Factory transportFactory, LocalMetricRegistry localRegistry, GelfCodec.Factory codecFactory, Config config, Descriptor descriptor, ServerStatus serverStatus) { super(metricRegistry, configuration, transportFactory.create(configuration), localRegistry, codecFactory.create(configuration), config, descriptor, serverStatus); } public interface Factory extends MessageInput.Factory<LumberjackInput> { @Override LumberjackInput create(Configuration configuration); @Override Config getConfig(); @Override Descriptor getDescriptor(); } public static class Descriptor extends MessageInput.Descriptor { @Inject public Descriptor() { super(NAME, false, ""); } } public static class Config extends MessageInput.Config { @Inject public Config(LumberjackTransport.Factory transport, GelfCodec.Factory codec) { super(transport.getConfig(), codec.getConfig()); } } }