package org.skyscreamer.yoga.listener;
import java.io.IOException;
import org.skyscreamer.yoga.configuration.EntityConfigurationRegistry;
import org.skyscreamer.yoga.model.MapHierarchicalModel;
/**
* User: cpage
* Date: 12/10/11 Time: 3:59 PM
*/
public class SelectorBuilderListener extends HrefListener
{
public static final String FIELD_NAME = "selectorBuilder";
private UriGenerator _uriGenerator;
private String suffix = "yoga";
public SelectorBuilderListener()
{
this._uriGenerator = new UriGenerator();
}
public SelectorBuilderListener( UriGenerator uriGenerator )
{
this._uriGenerator = uriGenerator;
}
@Deprecated
/** use setUriGenerator instead */
public void setEntityConfigurationRegistry( EntityConfigurationRegistry entityConfigurationRegistry)
{
this._uriGenerator.setEntityConfigurationRegistry( entityConfigurationRegistry );
}
public void setUriGenerator( UriGenerator uriGenerator )
{
this._uriGenerator = uriGenerator;
}
@Override
public <T> void eventOccurred( RenderingEvent<T> event ) throws IOException
{
if (event.getType() == RenderingEventType.POJO_CHILD && !event.getSelector().isInfluencedExternally())
{
String href = _uriGenerator.determineTemplate( event.getValueType() );
if ( href != null )
{
MapHierarchicalModel<?> model = ( MapHierarchicalModel<?> ) event.getModel();
model.addProperty( FIELD_NAME, _uriGenerator.getUrl( href, suffix, event ) );
}
}
}
public void setSuffix( String suffix )
{
this.suffix = suffix;
}
}