/*
* *************************************************************************************
* Copyright (C) 2008 EsperTech, Inc. All rights reserved. *
* http://esper.codehaus.org *
* 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.pattern;
import com.espertech.esper.client.ConfigurationPlugInPatternObject;
import com.espertech.esper.client.ConfigurationException;
import com.espertech.esper.epl.spec.PatternGuardSpec;
import com.espertech.esper.epl.spec.PatternObserverSpec;
import com.espertech.esper.epl.spec.PluggableObjectCollection;
import com.espertech.esper.support.pattern.SupportObserverFactory;
import com.espertech.esper.support.pattern.SupportGuardFactory;
import com.espertech.esper.pattern.guard.TimerWithinGuardFactory;
import com.espertech.esper.pattern.observer.TimerIntervalObserverFactory;
import com.espertech.esper.view.TestViewSupport;
import java.util.List;
import java.util.ArrayList;
import junit.framework.TestCase;
public class TestPatternObjectResolutionServiceImpl extends TestCase
{
private PatternObjectResolutionServiceImpl service;
public void setUp()
{
List<ConfigurationPlugInPatternObject> init = new ArrayList<ConfigurationPlugInPatternObject>();
init.add(makeGuardSpec("g", "h", SupportGuardFactory.class.getName()));
init.add(makeObserverSpec("a", "b", SupportObserverFactory.class.getName()));
PluggableObjectCollection desc = new PluggableObjectCollection();
desc.addPatternObjects(init);
desc.addObjects(PatternObjectHelper.getBuiltinPatternObjects());
service = new PatternObjectResolutionServiceImpl(desc);
}
public void testMake() throws Exception
{
assertTrue(service.create(new PatternGuardSpec("g", "h", TestViewSupport.toExprListBean(new Object[] {100}))) instanceof SupportGuardFactory);
assertTrue(service.create(new PatternObserverSpec("a", "b", TestViewSupport.toExprListBean(new Object[] {100}))) instanceof SupportObserverFactory);
assertTrue(service.create(new PatternGuardSpec("timer", "within", TestViewSupport.toExprListBean(new Object[] {100}))) instanceof TimerWithinGuardFactory);
assertTrue(service.create(new PatternObserverSpec("timer", "interval", TestViewSupport.toExprListBean(new Object[] {100}))) instanceof TimerIntervalObserverFactory);
}
public void testInvalidConfig()
{
List<ConfigurationPlugInPatternObject> init = new ArrayList<ConfigurationPlugInPatternObject>();
init.add(makeGuardSpec("x", "y", "a"));
tryInvalid(init);
init.clear();
init.add(makeGuardSpec("a", "b", null));
tryInvalid(init);
}
private void tryInvalid(List<ConfigurationPlugInPatternObject> config)
{
try
{
PluggableObjectCollection desc = new PluggableObjectCollection();
desc.addPatternObjects(config);
service = new PatternObjectResolutionServiceImpl(desc);
fail();
}
catch (ConfigurationException ex)
{
// expected
}
}
private ConfigurationPlugInPatternObject makeGuardSpec(String namespace, String name, String factory)
{
ConfigurationPlugInPatternObject guardSpec = new ConfigurationPlugInPatternObject();
guardSpec.setNamespace(namespace);
guardSpec.setName(name);
guardSpec.setPatternObjectType(ConfigurationPlugInPatternObject.PatternObjectType.GUARD);
guardSpec.setFactoryClassName(factory);
return guardSpec;
}
private ConfigurationPlugInPatternObject makeObserverSpec(String namespace, String name, String factory)
{
ConfigurationPlugInPatternObject obsSpec = new ConfigurationPlugInPatternObject();
obsSpec.setNamespace(namespace);
obsSpec.setName(name);
obsSpec.setPatternObjectType(ConfigurationPlugInPatternObject.PatternObjectType.OBSERVER);
obsSpec.setFactoryClassName(factory);
return obsSpec;
}
}