import com.espertech.esper.client.*; import java.util.Date; public class PatternTest { public static class Tick { String symbol; Double price; Date timeStamp; public Tick(String s, double p, long t) { symbol = s; price = p; timeStamp = new Date(t); } public double getPrice() { return price; } public String getSymbol() { return symbol; } public Date getTimeStamp() { return timeStamp; } @Override public String toString() { return "Price: " + price.toString() + " time: " + timeStamp.toString(); } } public static class Company { String symbol; String name; public Company(String s, String n) { symbol = s; name = n; } public String getSymbol() { return symbol; } public String getName() { return name; } @Override public String toString() { return "Company: " + name + " symbol: " + symbol; } } public static void GenerateTick(EPRuntime cepRT, String symbol, double price, long time) { Tick tick = new Tick(symbol, price, time); System.out.println("Sending tick:" + tick); cepRT.sendEvent(tick); } public static class CEPListener implements UpdateListener { public void update(EventBean[] newData, EventBean[] oldData) { System.out.println("Event received: " + newData[0].getUnderlying()); } } public static boolean test(Object o) { return true; } public static void main(String[] args) { // The Configuration is meant only as an initialization-time object. Configuration cepConfig = new Configuration(); cepConfig.addEventType("StockTick", Tick.class.getName()); cepConfig.addEventType("Company", Company.class.getName()); EPServiceProvider cep = EPServiceProviderManager.getProvider("myCEPEngine", cepConfig); EPRuntime cepRT = cep.getEPRuntime(); cep.getEPAdministrator().getConfiguration().addPlugInSingleRowFunction("test", PatternTest.class.getName(), "test"); EPAdministrator cepAdm = cep.getEPAdministrator(); cepAdm.createEPL("create window MY_WIN.std:unique(symbol).win:keepall() as Company"); //NOTE THAT THESE ARE SIMILAR BUT PRODUCE DIFFERENT STACK TRACES EPStatement cepStatement = cepAdm.createEPL("select * from pattern[atom=StockTick(test((select * from MY_WIN)))]"); // EPStatement cepStatement = cepAdm.createEPL("select * from pattern[atom=StockTick(test((select name from MY_WIN where symbol=atom1.symbol)))]"); cepStatement.addListener(new CEPListener()); long time = System.currentTimeMillis(); GenerateTick(cepRT, "ABC", 12.5, time); } }