/* *************************************************************************************** * Copyright (C) 2006 EsperTech, Inc. All rights reserved. * * http://www.espertech.com/esper * * http://www.espertech.com * * ---------------------------------------------------------------------------------- * * The software in this package is published under the terms of the GPL license * * a copy of which has been included with this distribution in the license.txt file. * *************************************************************************************** */ package com.espertech.esper.regression.epl; import com.espertech.esper.client.EPServiceProvider; import com.espertech.esper.client.EPServiceProviderManager; import com.espertech.esper.client.EPStatement; import com.espertech.esper.client.scopetest.SupportUpdateListener; import com.espertech.esper.metrics.instrumentation.InstrumentationHelper; import com.espertech.esper.supportregression.bean.SupportBean; import com.espertech.esper.supportregression.bean.SupportBeanComplexProps; import com.espertech.esper.supportregression.client.SupportConfigFactory; import com.espertech.esper.client.EventBean; import junit.framework.TestCase; public class TestPatternEventProperties extends TestCase { private EPServiceProvider epService; private SupportUpdateListener updateListener; public void setUp() { epService = EPServiceProviderManager.getDefaultProvider(SupportConfigFactory.getConfiguration()); epService.initialize(); if (InstrumentationHelper.ENABLED) { InstrumentationHelper.startTest(epService, this.getClass(), getName());} updateListener = new SupportUpdateListener(); } protected void tearDown() throws Exception { if (InstrumentationHelper.ENABLED) { InstrumentationHelper.endTest();} updateListener = null; } public void testWildcardSimplePattern() { setupSimplePattern("*"); Object theEvent = new SupportBean(); epService.getEPRuntime().sendEvent(theEvent); EventBean eventBean = updateListener.assertOneGetNewAndReset(); assertSame(theEvent, eventBean.get("a")); } public void testWildcardOrPattern() { setupOrPattern("*"); Object theEvent = new SupportBean(); epService.getEPRuntime().sendEvent(theEvent); EventBean eventBean = updateListener.assertOneGetNewAndReset(); assertSame(theEvent, eventBean.get("a")); assertNull(eventBean.get("b")); theEvent = SupportBeanComplexProps.makeDefaultBean(); epService.getEPRuntime().sendEvent(theEvent); eventBean = updateListener.assertOneGetNewAndReset(); assertSame(theEvent, eventBean.get("b")); assertNull(eventBean.get("a")); } public void testPropertiesSimplePattern() { setupSimplePattern("a, a as myEvent, a.intPrimitive as myInt, a.theString"); SupportBean theEvent = new SupportBean(); theEvent.setIntPrimitive(1); theEvent.setTheString("test"); epService.getEPRuntime().sendEvent(theEvent); EventBean eventBean = updateListener.assertOneGetNewAndReset(); assertSame(theEvent, eventBean.get("a")); assertSame(theEvent, eventBean.get("myEvent")); assertEquals(1, eventBean.get("myInt")); assertEquals("test", eventBean.get("a.theString")); } public void testPropertiesOrPattern() { setupOrPattern("a, a as myAEvent, b, b as myBEvent, a.intPrimitive as myInt, " + "a.theString, b.simpleProperty as simple, b.indexed[0] as indexed, b.nested.nestedValue as nestedVal"); Object theEvent = SupportBeanComplexProps.makeDefaultBean(); epService.getEPRuntime().sendEvent(theEvent); EventBean eventBean = updateListener.assertOneGetNewAndReset(); assertSame(theEvent, eventBean.get("b")); assertEquals("simple", eventBean.get("simple")); assertEquals(1, eventBean.get("indexed")); assertEquals("nestedValue", eventBean.get("nestedVal")); assertNull(eventBean.get("a")); assertNull(eventBean.get("myAEvent")); assertNull(eventBean.get("myInt")); assertNull(eventBean.get("a.theString")); SupportBean eventTwo = new SupportBean(); eventTwo.setIntPrimitive(2); eventTwo.setTheString("test2"); epService.getEPRuntime().sendEvent(eventTwo); eventBean = updateListener.assertOneGetNewAndReset(); assertEquals(2, eventBean.get("myInt")); assertEquals("test2", eventBean.get("a.theString")); assertNull(eventBean.get("b")); assertNull(eventBean.get("myBEvent")); assertNull(eventBean.get("simple")); assertNull(eventBean.get("indexed")); assertNull(eventBean.get("nestedVal")); } private void setupSimplePattern(String selectCriteria) { String stmtText = "select " + selectCriteria + " from pattern [a=" + SupportBean.class.getName() + "]"; EPStatement stmt = epService.getEPAdministrator().createEPL(stmtText); stmt.addListener(updateListener); } private void setupOrPattern(String selectCriteria) { String stmtText = "select " + selectCriteria + " from pattern [every(a=" + SupportBean.class.getName() + " or b=" + SupportBeanComplexProps.class.getName() + ")]"; EPStatement stmt = epService.getEPAdministrator().createEPL(stmtText); stmt.addListener(updateListener); } }