Question

There are lots of examples of how to write transformers etc in java but nothing about filters (except the script type filters, but I want to use a java method).

I'd like to create a custom java filter to filter the payload of a message from a source to a sink.

The examples of filters all refer to an expression.

(How) can I tell the context to execute a java method in a specified class as the expression?

Was it helpful?

Solution

Well, what you need to implement the custom Processor Module. Just follow with Custom Transformer sample from Spring XD Guilde

The custom Selector for filter:

public class MySelector implements MessageSelector {

     boolean accept(Message<?> message) {
      ...
    }
}

Module ctx myfilter.xml:

<channel id="input"/>

<filter input-channel="input" output-channel="output">
    <beans:bean class="custom.MySelector" />
</filter>

<channel id="output"/>

Package your class to the jar and place everything to the dir ${xd.home}/modules/processors/myfilter with structure:

/myfilter
   /config
      myfilter.xml
   /lib
      myfilter.jar

Test it like this:

xd:> stream create --name filtertest --definition "http | myfilter | log"
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top