package org.skyscreamer.yoga.test.util; import java.util.List; import java.util.Map; import org.junit.Assert; import org.skyscreamer.yoga.configuration.DefaultEntityConfigurationRegistry; import org.skyscreamer.yoga.configuration.EntityConfigurationRegistry; import org.skyscreamer.yoga.exceptions.ParseSelectorException; import org.skyscreamer.yoga.listener.RenderingListener; import org.skyscreamer.yoga.mapper.ResultTraverser; import org.skyscreamer.yoga.mapper.YogaRequestContext; import org.skyscreamer.yoga.model.ObjectMapHierarchicalModelImpl; import org.skyscreamer.yoga.selector.CoreSelector; import org.skyscreamer.yoga.selector.Selector; import org.skyscreamer.yoga.selector.SelectorResolver; import org.skyscreamer.yoga.selector.parser.AliasSelectorResolver; /** * User: corby Date: 5/7/12 */ public abstract class AbstractTraverserTest { private final SelectorResolver resolver = new SelectorResolver(); { resolver.setEntityConfigurationRegistry( new DefaultEntityConfigurationRegistry() ); } protected Map<String, Object> doTraverse( Object instance, String selectorString, ResultTraverser traverser, RenderingListener ... listeners ) { try { YogaRequestContext context = new YogaRequestContext( "test", resolver, new DummyHttpServletRequest(), new DummyHttpServletResponse(), listeners ); Selector selector = resolver.resolveSelector( selectorString ); ObjectMapHierarchicalModelImpl model = new ObjectMapHierarchicalModelImpl(); traverser.traverse( instance, selector, model, context ); return model.getUnderlyingModel(); } catch (ParseSelectorException e) { Assert.fail( "Could not parse selector string " + selectorString ); } catch (Exception e) { e.printStackTrace(); Assert.fail( "exception occurred" ); } return null; } @SuppressWarnings("unchecked") protected List<Map<String, Object>> getList( Map<String, Object> map, String s ) { return (List<Map<String, Object>>) map.get( s ); } protected Map<String, Object> findItem( List<Map<String, Object>> list, String key, Object value ) { for (Map<String, Object> item : list) { if (item.get( key ) != null && item.get( key ).equals( value )) { return item; } } return null; } public void setAliasSelectorResolver( AliasSelectorResolver aliasSelectorResolver ) { resolver.getSelectorParser().setAliasSelectorResolver( aliasSelectorResolver ); } public EntityConfigurationRegistry getEntityConfigurationRegistry() { return getCoreSelector().getEntityConfigurationRegistry(); } public CoreSelector getCoreSelector() { return resolver.getBaseSelector(); } }