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]

Reply via email to