Skip to content

Commit e32dd29

Browse files
authored
Update input plugin for beta version of the Java API
Update input plugin for beta version of the Java API
2 parents 1142e20 + 71231f7 commit e32dd29

File tree

4 files changed

+37
-27
lines changed

4 files changed

+37
-27
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,4 @@ This is a Java plugin for [Logstash](https://github.com/elastic/logstash).
66

77
It is fully free and fully open source. The license is Apache 2.0, meaning you are free to use it however you want.
88

9-
The documentation for Logstash Java plugins is available [here](https://www.elastic.co/guide/en/logstash/6.6/contributing-java-plugin.html).
9+
The documentation for Logstash Java plugins is available [here](https://www.elastic.co/guide/en/logstash/6.7/contributing-java-plugin.html).

build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@ apply plugin: 'maven'
88
apply plugin: "distribution"
99

1010
group 'org.logstash.javaapi'
11-
version "${new File("VERSION").text.trim()}"
11+
version "${file("VERSION").text.trim()}"
1212

13-
description = "Example Java filter implementation"
13+
description = "Example Java input implementation"
1414

1515
sourceCompatibility = 1.8
1616
targetCompatibility = 1.8

src/main/java/org/logstash/javaapi/JavaInputExample.java

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,41 +2,44 @@
22

33
import co.elastic.logstash.api.Configuration;
44
import co.elastic.logstash.api.Context;
5+
import co.elastic.logstash.api.Input;
56
import co.elastic.logstash.api.LogstashPlugin;
67
import co.elastic.logstash.api.PluginConfigSpec;
7-
import co.elastic.logstash.api.v0.Input;
88
import org.apache.commons.lang3.StringUtils;
9-
import org.logstash.execution.queue.QueueWriter;
109

1110
import java.util.Arrays;
1211
import java.util.Collection;
1312
import java.util.Collections;
13+
import java.util.Map;
1414
import java.util.concurrent.CountDownLatch;
15+
import java.util.function.Consumer;
1516

1617
// class name must match plugin name
1718
@LogstashPlugin(name="java_input_example")
1819
public class JavaInputExample implements Input {
1920

2021
public static final PluginConfigSpec<Long> EVENT_COUNT_CONFIG =
21-
Configuration.numSetting("count", 3);
22+
PluginConfigSpec.numSetting("count", 3);
2223

2324
public static final PluginConfigSpec<String> PREFIX_CONFIG =
24-
Configuration.stringSetting("prefix", "message");
25+
PluginConfigSpec.stringSetting("prefix", "message");
2526

27+
private String id;
2628
private long count;
2729
private String prefix;
2830
private final CountDownLatch done = new CountDownLatch(1);
2931
private volatile boolean stopped;
3032

31-
// all plugins must provide a constructor that accepts Configuration and Context
32-
public JavaInputExample(Configuration config, Context context) {
33+
// all plugins must provide a constructor that accepts id, Configuration, and Context
34+
public JavaInputExample(String id, Configuration config, Context context) {
3335
// constructors should validate configuration options
36+
this.id = id;
3437
count = config.get(EVENT_COUNT_CONFIG);
3538
prefix = config.get(PREFIX_CONFIG);
3639
}
3740

3841
@Override
39-
public void start(QueueWriter queueWriter) {
42+
public void start(Consumer<Map<String, Object>> consumer) {
4043

4144
// The start method should push Map<String, Object> instances to the supplied QueueWriter
4245
// instance. Those will be converted to Event instances later in the Logstash event
@@ -51,7 +54,7 @@ public void start(QueueWriter queueWriter) {
5154
try {
5255
while (!stopped && eventCount < count) {
5356
eventCount++;
54-
queueWriter.push(Collections.singletonMap("message",
57+
consumer.accept(Collections.singletonMap("message",
5558
prefix + " " + StringUtils.center(eventCount + " of " + count, 20)));
5659
}
5760
} finally {
@@ -75,4 +78,9 @@ public Collection<PluginConfigSpec<?>> configSchema() {
7578
// should return a list of all configuration options for this plugin
7679
return Arrays.asList(EVENT_COUNT_CONFIG, PREFIX_CONFIG);
7780
}
81+
82+
@Override
83+
public String getId() {
84+
return this.id;
85+
}
7886
}

src/test/java/org/logstash/javaapi/JavaInputExampleTest.java

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,13 @@
44
import org.apache.commons.lang3.StringUtils;
55
import org.junit.Assert;
66
import org.junit.Test;
7-
import org.logstash.execution.queue.QueueWriter;
7+
import org.logstash.plugins.ConfigurationImpl;
88

99
import java.util.ArrayList;
1010
import java.util.HashMap;
1111
import java.util.List;
1212
import java.util.Map;
13+
import java.util.function.Consumer;
1314

1415
public class JavaInputExampleTest {
1516

@@ -20,32 +21,33 @@ public void testJavaInputExample() {
2021
Map<String, Object> configValues = new HashMap<>();
2122
configValues.put(JavaInputExample.PREFIX_CONFIG.name(), prefix);
2223
configValues.put(JavaInputExample.EVENT_COUNT_CONFIG.name(), eventCount);
23-
Configuration config = new Configuration(configValues);
24-
JavaInputExample input = new JavaInputExample(config, null);
25-
TestQueueWriter testQueueWriter = new TestQueueWriter();
26-
input.start(testQueueWriter);
24+
Configuration config = new ConfigurationImpl(configValues);
25+
JavaInputExample input = new JavaInputExample("test-id", config, null);
26+
TestConsumer testConsumer = new TestConsumer();
27+
input.start(testConsumer);
2728

28-
List<Map<String, Object>> events = testQueueWriter.getEvents();
29+
List<Map<String, Object>> events = testConsumer.getEvents();
2930
Assert.assertEquals(eventCount, events.size());
3031
for (int k = 1; k <= events.size(); k++) {
3132
Assert.assertEquals(prefix + " " + StringUtils.center(k + " of " + eventCount, 20),
3233
events.get(k - 1).get("message"));
3334
}
3435
}
35-
}
3636

37-
class TestQueueWriter implements QueueWriter {
37+
private static class TestConsumer implements Consumer<Map<String, Object>> {
3838

39-
private List<Map<String, Object>> events = new ArrayList<>();
39+
private List<Map<String, Object>> events = new ArrayList<>();
4040

41-
@Override
42-
public void push(Map<String, Object> event) {
43-
synchronized (this) {
44-
events.add(event);
41+
@Override
42+
public void accept(Map<String, Object> event) {
43+
synchronized (this) {
44+
events.add(event);
45+
}
4546
}
46-
}
4747

48-
public List<Map<String, Object>> getEvents() {
49-
return events;
48+
public List<Map<String, Object>> getEvents() {
49+
return events;
50+
}
5051
}
52+
5153
}

0 commit comments

Comments
 (0)