It's not quite as elegant as I would have hoped. I only asked because I've found over the years of using Tap you never know what these guys may have already built, hoping not to reinvent the wheel. Anyhow, unless the tap guys have something already built, this ended up being my reusable solution.
public class ObjectModelFactoryImpl implements ObjectModelFactory { private final PropertyAccess propertyAccess; private final ValueEncoderSource valueEncoderSource; private final ValueLabelProvider<Object> valueLabelProvider; public ObjectModelFactoryImpl(PropertyAccess propertyAccess, ValueEncoderSource valueEncoderSource, ValueLabelProvider<Object> valueLabelProvider) { this.propertyAccess = propertyAccess; this.valueEncoderSource = valueEncoderSource; this.valueLabelProvider = valueLabelProvider; } public List<Object> create(List<?> objects, String labelProperty) { PropertyValueLabelProvider propertyValueLabelProvider = new PropertyValueLabelProvider( valueEncoderSource, propertyAccess, labelProperty); return createSelectModel(objects, propertyValueLabelProvider); } private List<Object> createSelectModel(List<?> objects, ValueLabelProvider<Object> labelProvider) { final List<Object> options = CollectionFactory.newList(); for (Object object : objects) { String label = labelProvider.getLabel(object); options.add(label); } return options; } } public interface ObjectModelFactory { public List<Object> create(List<?> objects, String labelProperty); } On Wed, Oct 16, 2013 at 2:34 PM, Dimitris Zenios <dimitris.zen...@gmail.com>wrote: > What about these? > > return F.flow(ldapCache.findAllLDAPUsers(keyword)).map(new > Mapper<LDAPProfile,String>() { > public String map(LDAPProfile element) { > return element.getName(); > } > }).toList(); > > > On Wed, Oct 16, 2013 at 8:49 PM, George Christman > <gchrist...@cardaddy.com>wrote: > > > I'm wondering if there is already a tapestry service available for > creating > > a string array from an object list similar to the > > SelectModelFactory.createSelectModel. > > > > I find myself creating similar code to below in my autocompletes. > > > > public List<String> onProvideCompletionsFromSupervisor(String keyword) { > > List<LDAPProfile> ldapProfiles = ldapCache.findAllLDAPUsers(keyword); > > > > List<String> results = new ArrayList<>()'; > > > > for(LDAPProfile ldapProfile : ldapProfiles) { > > results.add(ldapProfile.getName); > > } > > > > return results; > > > -- George Christman www.CarDaddy.com P.O. Box 735 Johnstown, New York