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]
>
>

Reply via email to