package org.skyscreamer.yoga.listener;
import java.io.IOException;
import org.skyscreamer.yoga.model.ListHierarchicalModel;
import org.skyscreamer.yoga.model.MapHierarchicalModel;
import org.skyscreamer.yoga.selector.Property;
import org.skyscreamer.yoga.selector.parser.SelectorParser;
public class ModelDefinitionListener implements RenderingListener
{
@Override
public <T> void eventOccurred( RenderingEvent<T> event ) throws IOException
{
if (event.getType() != RenderingEventType.POJO_CHILD || event.getSelector().isInfluencedExternally())
{
return;
}
MapHierarchicalModel<?> model = ( MapHierarchicalModel<?>) event.getModel();
ListHierarchicalModel<?> definitionModel = model.createChildList( SelectorParser.DEFINITION );
Class<T> instanceType = event.getValueType();
for (Property<T> property : event.getSelector().getAllPossibleFieldMap( instanceType ).values() )
{
definitionModel.addValue( property.name() );
}
definitionModel.finished();
}
}