package org.skyscreamer.yoga.selector;
import java.util.Collection;
public class CompositeStarSelector extends CompositeSelector
{
public CompositeStarSelector( CoreSelector coreSelector, FieldSelector fieldSelector )
{
super( coreSelector, fieldSelector );
}
@Override
public <T> Collection<Property<T>> getSelectedFields(Class<T> instanceType)
{
if (fieldSelector.containsField( instanceType, "*" ) )
{
return coreSelector.getAllPossibleFieldMap( instanceType ).values();
}
else
{
return super.getSelectedFields( instanceType );
}
}
@Override
public Selector getChildSelector( Class<?> instanceType, String fieldName )
{
FieldSelector childSelector = fieldSelector.getChildSelector( instanceType, fieldName );
if ( childSelector == null && fieldSelector.containsField( "*" ) )
{
childSelector = fieldSelector.getChildSelector( instanceType, "*" );
}
return getChildSelector( childSelector );
}
private Selector getChildSelector(FieldSelector fieldSelectorChild)
{
if ( fieldSelectorChild == null )
{
return coreSelector;
}
else
{
return new CompositeStarSelector( coreSelector, fieldSelectorChild );
}
}
}