I actually backed this out once I saw that Tapestry already does some sort of coercion if the model parameter is a List of Strings. I didn't get a chance to look through the call chain to see what's actually going on. I figured it was best to go get some sleep before I broke anything. -- Kevin
On Sun, Mar 8, 2009 at 12:41 PM, Howard Lewis Ship <[email protected]> wrote: > Would it be appropriate to include a TypeCoercion from String to > SelectModel to go along with this utility method? > > On Sat, Mar 7, 2009 at 9:02 PM, <[email protected]> wrote: > > Author: kmenard > > Date: Sun Mar 8 05:02:49 2009 > > New Revision: 751366 > > > > URL: http://svn.apache.org/viewvc?rev=751366&view=rev > > Log: > > Fixed TAP5-564: Add StringPropertySelectModel. > > > > Added: > > > > tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/util/StringSelectModel.java > > > > tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/util/StringSelectModelTest.java > > > > Added: > tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/util/StringSelectModel.java > > URL: > http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/util/StringSelectModel.java?rev=751366&view=auto > > > ============================================================================== > > --- > tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/util/StringSelectModel.java > (added) > > +++ > tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/util/StringSelectModel.java > Sun Mar 8 05:02:49 2009 > > @@ -0,0 +1,58 @@ > > +// Copyright 2009 The Apache Software Foundation > > +// > > +// Licensed under the Apache License, Version 2.0 (the "License"); > > +// you may not use this file except in compliance with the License. > > +// You may obtain a copy of the License at > > +// > > +// http://www.apache.org/licenses/LICENSE-2.0 > > +// > > +// Unless required by applicable law or agreed to in writing, software > > +// distributed under the License is distributed on an "AS IS" BASIS, > > +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or > implied. > > +// See the License for the specific language governing permissions and > > +// limitations under the License. > > + > > +package org.apache.tapestry5.util; > > + > > +import org.apache.tapestry5.OptionGroupModel; > > +import org.apache.tapestry5.OptionModel; > > +import org.apache.tapestry5.internal.TapestryInternalUtils; > > +import org.apache.tapestry5.internal.OptionModelImpl; > > +import org.apache.tapestry5.ioc.Messages; > > +import static org.apache.tapestry5.ioc.internal.util.Defense.notNull; > > +import org.apache.tapestry5.ioc.internal.util.CollectionFactory; > > + > > +import java.io.Serializable; > > +import java.util.List; > > +import java.util.Collections; > > +import java.util.Arrays; > > + > > +/** > > + * A basic select model for a collection of Strings. > > + */ > > +public class StringSelectModel extends AbstractSelectModel implements > Serializable > > +{ > > + private List<OptionModel> options = CollectionFactory.newList(); > > + > > + public StringSelectModel(List<String> values) > > + { > > + notNull(values, "values"); > > + > > + options = > Collections.unmodifiableList(TapestryInternalUtils.toOptionModels(values)); > > + } > > + > > + public StringSelectModel(String... values) > > + { > > + this(Arrays.asList(values)); > > + } > > + > > + public List<OptionGroupModel> getOptionGroups() > > + { > > + return null; > > + } > > + > > + public List<OptionModel> getOptions() > > + { > > + return options; > > + } > > +} > > > > Added: > tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/util/StringSelectModelTest.java > > URL: > http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/util/StringSelectModelTest.java?rev=751366&view=auto > > > ============================================================================== > > --- > tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/util/StringSelectModelTest.java > (added) > > +++ > tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/util/StringSelectModelTest.java > Sun Mar 8 05:02:49 2009 > > @@ -0,0 +1,74 @@ > > +// Copyright 2009 The Apache Software Foundation > > +// > > +// Licensed under the Apache License, Version 2.0 (the "License"); > > +// you may not use this file except in compliance with the License. > > +// You may obtain a copy of the License at > > +// > > +// http://www.apache.org/licenses/LICENSE-2.0 > > +// > > +// Unless required by applicable law or agreed to in writing, software > > +// distributed under the License is distributed on an "AS IS" BASIS, > > +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or > implied. > > +// See the License for the specific language governing permissions and > > +// limitations under the License. > > + > > +package org.apache.tapestry5.util; > > + > > +import org.apache.tapestry5.test.TapestryTestCase; > > +import org.apache.tapestry5.SelectModel; > > +import org.apache.tapestry5.OptionModel; > > +import org.testng.annotations.Test; > > + > > +import java.util.List; > > +import java.util.Arrays; > > + > > +public class StringSelectModelTest extends TapestryTestCase > > +{ > > + @Test > > + public void generated_option_models_list_constructor() > > + { > > + replay(); > > + > > + List<String> stooges = Arrays.asList("Moe", "Larry", "Curly > Joe"); > > + SelectModel model = new StringSelectModel(stooges); > > + > > + List<OptionModel> options = model.getOptions(); > > + > > + assertEquals(options.size(), stooges.size()); > > + > > + for (int i = 0; i < options.size(); i++) > > + { > > + checkOption(options, i, stooges.get(i)); > > + } > > + > > + verify(); > > + } > > + > > + @Test > > + public void generated_option_models_vararg_constructor() > > + { > > + replay(); > > + > > + SelectModel model = new StringSelectModel("Moe", "Larry", "Curly > Joe"); > > + > > + List<OptionModel> options = model.getOptions(); > > + > > + assertEquals(options.size(), 3); > > + > > + checkOption(options, 0, "Moe"); > > + checkOption(options, 1, "Larry"); > > + checkOption(options, 2, "Curly Joe"); > > + > > + verify(); > > + } > > + > > + private void checkOption(List<OptionModel> options, int i, String > value) > > + { > > + OptionModel model = options.get(i); > > + > > + assertEquals(model.getLabel(), value); > > + assertFalse(model.isDisabled()); > > + assertSame(model.getValue(), value); > > + assertNull(model.getAttributes()); > > + } > > +} > > > > > > > > > > -- > Howard M. Lewis Ship > > Creator Apache Tapestry and Apache HiveMind > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] > >
