TypeCoercer is so intrinsic to how Tapestry operates, including the ability to chain coercions together ...
On Sun, Mar 8, 2009 at 11:52 AM, Kevin Menard <[email protected]> wrote: > 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] >> >> > -- Howard M. Lewis Ship Creator Apache Tapestry and Apache HiveMind --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
