    001    // Copyright 2007, 2008 The Apache Software Foundation
    002    //
    003    // Licensed under the Apache License, Version 2.0 (the "License");
    004    // you may not use this file except in compliance with the License.
    005    // You may obtain a copy of the License at
    006    //
    007    //     http://www.apache.org/licenses/LICENSE-2.0
    008    //
    009    // Unless required by applicable law or agreed to in writing, software
    010    // distributed under the License is distributed on an "AS IS" BASIS,
    011    // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    012    // See the License for the specific language governing permissions and
    013    // limitations under the License.
    014
    015    package org.apache.tapestry5.upload.internal.services;
    016
    017    import static org.apache.tapestry5.ioc.internal.util.CollectionFactory.newList;
    018
    019    import java.util.List;
    020
    021    /**
    022     * Holds single or multivalued values.
    023     */
    024    public class ParameterValue
    025    {
    026        private final List<String> values = newList();
    027
    028        public static final ParameterValue NULL = new ParameterValue()
    029        {
    030            @Override
    031            public String single()
    032            {
    033                return null;
    034            }
    035
    036            @Override
    037            public String[] multi()
    038            {
    039                return null;
    040            }
    041        };
    042
    043        public ParameterValue(String value)
    044        {
    045            values.add(value);
    046        }
    047
    048        public ParameterValue(String... values)
    049        {
    050            for (String v : values)
    051            {
    052                add(v);
    053            }
    054        }
    055
    056        /**
    057         * @return Single value of parameter (or first value if there are multiple values)
    058         */
    059        public String single()
    060        {
    061            return values.get(0);
    062        }
    063
    064        /**
    065         * @return All values of parameter
    066         */
    067        public String[] multi()
    068        {
    069            return values.toArray(new String[values.size()]);
    070        }
    071
    072        public void add(String value)
    073        {
    074            values.add(value);
    075        }
    076
    077        public boolean isMulti()
    078        {
    079            return values.size() > 1;
    080        }
    081    }