/*
* *************************************************************************************
* 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.event.bean;
import com.espertech.esper.client.ConfigurationEventTypeLegacy;
import com.espertech.esper.client.ConfigurationException;
import com.espertech.esper.client.scopetest.EPAssertionUtil;
import com.espertech.esper.event.EventPropertyType;
import com.espertech.esper.support.bean.SupportLegacyBean;
import com.espertech.esper.support.bean.SupportBean;
import java.util.List;
import java.util.LinkedList;
import junit.framework.TestCase;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class TestPropertyListBuilderExplicit extends TestCase
{
private PropertyListBuilderExplicit builder;
public void setUp()
{
ConfigurationEventTypeLegacy config = new ConfigurationEventTypeLegacy();
config.addFieldProperty("f_legVal", "fieldLegacyVal");
config.addFieldProperty("f_strArr", "fieldStringArray");
config.addFieldProperty("f_strMap", "fieldMapped");
config.addFieldProperty("f_legNested", "fieldNested");
config.addMethodProperty("m_legVal", "readLegacyBeanVal");
config.addMethodProperty("m_strArr", "readStringArray");
config.addMethodProperty("m_strInd", "readStringIndexed");
config.addMethodProperty("m_strMapKeyed", "readMapByKey");
config.addMethodProperty("m_strMap", "readMap");
config.addMethodProperty("m_legNested", "readLegacyNested");
builder = new PropertyListBuilderExplicit(config);
}
public void testBuildPropList() throws Exception
{
List<InternalEventPropDescriptor> descList = builder.assessProperties(SupportLegacyBean.class);
List<InternalEventPropDescriptor> expected = new LinkedList<InternalEventPropDescriptor>();
expected.add(new InternalEventPropDescriptor("f_legVal", SupportLegacyBean.class.getField("fieldLegacyVal"), EventPropertyType.SIMPLE));
expected.add(new InternalEventPropDescriptor("f_strArr", SupportLegacyBean.class.getField("fieldStringArray"), EventPropertyType.SIMPLE));
expected.add(new InternalEventPropDescriptor("f_strMap", SupportLegacyBean.class.getField("fieldMapped"), EventPropertyType.SIMPLE));
expected.add(new InternalEventPropDescriptor("f_legNested", SupportLegacyBean.class.getField("fieldNested"), EventPropertyType.SIMPLE));
expected.add(new InternalEventPropDescriptor("m_legVal", SupportLegacyBean.class.getMethod("readLegacyBeanVal"), EventPropertyType.SIMPLE));
expected.add(new InternalEventPropDescriptor("m_strArr", SupportLegacyBean.class.getMethod("readStringArray"), EventPropertyType.SIMPLE));
expected.add(new InternalEventPropDescriptor("m_strInd", SupportLegacyBean.class.getMethod("readStringIndexed", new Class[] {int.class}), EventPropertyType.INDEXED));
expected.add(new InternalEventPropDescriptor("m_strMapKeyed", SupportLegacyBean.class.getMethod("readMapByKey", new Class[] {String.class}), EventPropertyType.MAPPED));
expected.add(new InternalEventPropDescriptor("m_strMap", SupportLegacyBean.class.getMethod("readMap"), EventPropertyType.SIMPLE));
expected.add(new InternalEventPropDescriptor("m_legNested", SupportLegacyBean.class.getMethod("readLegacyNested"), EventPropertyType.SIMPLE));
EPAssertionUtil.assertEqualsAnyOrder(expected.toArray(), descList.toArray());
}
public void testInvalid()
{
tryInvalidField("x", SupportBean.class);
tryInvalidField("intPrimitive", SupportBean.class);
tryInvalidMethod("x", SupportBean.class);
tryInvalidMethod("intPrimitive", SupportBean.class);
}
private void tryInvalidMethod(String methodName, Class clazz)
{
ConfigurationEventTypeLegacy config = new ConfigurationEventTypeLegacy();
config.addMethodProperty("name", methodName);
builder = new PropertyListBuilderExplicit(config);
try
{
builder.assessProperties(clazz);
}
catch (ConfigurationException ex)
{
// expected
log.debug(ex);
}
}
private void tryInvalidField(String fieldName, Class clazz)
{
ConfigurationEventTypeLegacy config = new ConfigurationEventTypeLegacy();
config.addFieldProperty("name", fieldName);
builder = new PropertyListBuilderExplicit(config);
try
{
builder.assessProperties(clazz);
}
catch (ConfigurationException ex)
{
// expected
log.debug(ex);
}
}
private static Log log = LogFactory.getLog(TestPropertyListBuilderExplicit.class);
}