1919import com .google .common .base .Strings ;
2020import com .google .common .collect .ImmutableMultimap ;
2121import com .google .common .collect .ImmutableSet ;
22- import com .google .common .collect .Multimap ;
2322import com .google .inject .assistedinject .Assisted ;
2423import org .graylog .plugins .pipelineprocessor .db .PipelineDao ;
2524import org .graylog .plugins .pipelineprocessor .db .PipelineService ;
2625import org .graylog .plugins .pipelineprocessor .processors .PipelineInterpreter ;
2726import org .graylog .plugins .pipelineprocessor .processors .listeners .NoopInterpreterListener ;
2827import org .graylog2 .decorators .Decorator ;
29- import org .graylog2 .indexer .results .ResultMessage ;
3028import org .graylog2 .plugin .Message ;
3129import org .graylog2 .plugin .configuration .ConfigurationRequest ;
3230import org .graylog2 .plugin .configuration .fields .ConfigurationField ;
3331import 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
3636import javax .inject .Inject ;
3737import java .util .ArrayList ;
38- import java .util .Collections ;
3938import java .util .List ;
4039import java .util .Map ;
4140import 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}
0 commit comments