Skip to content
This repository was archived by the owner on Mar 21, 2023. It is now read-only.

Commit 32d18fa

Browse files
dennisoelkerskroepke
authored andcommitted
Adapt to changed decorators interface (#43)
* Providing a message decorator that uses pipelines. * Making decorator configurable. * Allow adding new messages by pipeline decorator. * Adding changes related due to introduced listener. * Adapt to naming changes, using easier forEach idiom. * Changing decorator to work on SearchResponse instead of message list.
1 parent cf55dcb commit 32d18fa

File tree

2 files changed

+18
-18
lines changed

2 files changed

+18
-18
lines changed

src/main/java/org/graylog/plugins/pipelineprocessor/PipelineProcessorMessageDecorator.java

Lines changed: 15 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -19,34 +19,33 @@
1919
import com.google.common.base.Strings;
2020
import com.google.common.collect.ImmutableMultimap;
2121
import com.google.common.collect.ImmutableSet;
22-
import com.google.common.collect.Multimap;
2322
import com.google.inject.assistedinject.Assisted;
2423
import org.graylog.plugins.pipelineprocessor.db.PipelineDao;
2524
import org.graylog.plugins.pipelineprocessor.db.PipelineService;
2625
import org.graylog.plugins.pipelineprocessor.processors.PipelineInterpreter;
2726
import org.graylog.plugins.pipelineprocessor.processors.listeners.NoopInterpreterListener;
2827
import org.graylog2.decorators.Decorator;
29-
import org.graylog2.indexer.results.ResultMessage;
3028
import org.graylog2.plugin.Message;
3129
import org.graylog2.plugin.configuration.ConfigurationRequest;
3230
import org.graylog2.plugin.configuration.fields.ConfigurationField;
3331
import org.graylog2.plugin.configuration.fields.DropdownField;
34-
import org.graylog2.plugin.decorators.MessageDecorator;
32+
import org.graylog2.plugin.decorators.SearchResponseDecorator;
33+
import org.graylog2.rest.models.messages.responses.ResultMessageSummary;
34+
import org.graylog2.rest.resources.search.responses.SearchResponse;
3535

3636
import javax.inject.Inject;
3737
import java.util.ArrayList;
38-
import java.util.Collections;
3938
import java.util.List;
4039
import java.util.Map;
4140
import java.util.stream.Collectors;
4241

43-
public class PipelineProcessorMessageDecorator implements MessageDecorator {
42+
public class PipelineProcessorMessageDecorator implements SearchResponseDecorator {
4443
private static final String CONFIG_FIELD_PIPELINE = "pipeline";
4544

4645
private final PipelineInterpreter pipelineInterpreter;
4746
private final ImmutableSet<String> pipelines;
4847

49-
public interface Factory extends MessageDecorator.Factory {
48+
public interface Factory extends SearchResponseDecorator.Factory {
5049
@Override
5150
PipelineProcessorMessageDecorator create(Decorator decorator);
5251

@@ -57,7 +56,7 @@ public interface Factory extends MessageDecorator.Factory {
5756
Descriptor getDescriptor();
5857
}
5958

60-
public static class Config implements MessageDecorator.Config {
59+
public static class Config implements SearchResponseDecorator.Config {
6160
private final PipelineService pipelineService;
6261

6362
@Inject
@@ -81,7 +80,7 @@ public ConfigurationRequest getRequestedConfiguration() {
8180
};
8281
}
8382

84-
public static class Descriptor extends MessageDecorator.Descriptor {
83+
public static class Descriptor extends SearchResponseDecorator.Descriptor {
8584
public Descriptor() {
8685
super("Pipeline Processor Decorator", false, "http://docs.graylog.org/en/2.0/pages/pipelines.html", "Pipeline Processor Decorator");
8786
}
@@ -100,26 +99,25 @@ public PipelineProcessorMessageDecorator(PipelineInterpreter pipelineInterpreter
10099
}
101100

102101
@Override
103-
public List<ResultMessage> apply(List<ResultMessage> resultMessages) {
104-
final List<ResultMessage> results = new ArrayList<>();
102+
public SearchResponse apply(SearchResponse searchResponse) {
103+
final List<ResultMessageSummary> results = new ArrayList<>();
105104
if (pipelines.isEmpty()) {
106-
return resultMessages;
105+
return searchResponse;
107106
}
108-
resultMessages.forEach((inMessage) -> {
109-
final Message message = inMessage.getMessage();
107+
searchResponse.messages().forEach((inMessage) -> {
108+
final Message message = new Message(inMessage.message());
110109
final List<Message> additionalCreatedMessages = pipelineInterpreter.processForPipelines(message,
111110
message.getId(),
112111
pipelines,
113112
new NoopInterpreterListener());
114-
final ResultMessage outMessage = ResultMessage.createFromMessage(message, inMessage.getIndex(), inMessage.getHighlightRanges());
115113

116-
results.add(outMessage);
114+
results.add(ResultMessageSummary.create(inMessage.highlightRanges(), message.getFields(), inMessage.index()));
117115
additionalCreatedMessages.forEach((additionalMessage) -> {
118116
// TODO: pass proper highlight ranges. Need to rebuild them for new messages.
119-
results.add(ResultMessage.createFromMessage(additionalMessage, "[created from decorator]", ImmutableMultimap.of()));
117+
results.add(ResultMessageSummary.create(ImmutableMultimap.of(), additionalMessage.getFields(), "[created from decorator]"));
120118
});
121119
});
122120

123-
return results;
121+
return searchResponse.toBuilder().messages(results).build();
124122
}
125123
}

src/main/java/org/graylog/plugins/pipelineprocessor/PipelineProcessorModule.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@ protected void configure() {
4747

4848
install(new ProcessorFunctionsModule());
4949

50-
installMessageDecorator(messageDecoratorBinder(), PipelineProcessorMessageDecorator.class, PipelineProcessorMessageDecorator.Factory.class);
50+
installSearchResponseDecorator(searchResponseDecoratorBinder(),
51+
PipelineProcessorMessageDecorator.class,
52+
PipelineProcessorMessageDecorator.Factory.class);
5153
}
5254
}

0 commit comments

Comments
 (0)