package org.jboss.windup.config;

import java.util.Collection;
import java.util.Collections;

/**
 * Provides a base class for sharing default functionality between {@link ConfigurationOption}s.
 *
 * @author <a href="mailto:jesse.sightler@gmail.com">Jesse Sightler</a>
 * @author <a href="mailto:ozizka@redhat.com">Ondrej Zizka</a>
 */
public abstract class AbstractConfigurationOption implements ConfigurationOption
{
    private Collection<?> availableValues = Collections.emptyList();

    @Override
    public int getPriority()
    {
        return 0;
    }

    @Override
    public Collection<?> getAvailableValues()
    {
        return availableValues;
    }

    protected void setAvailableValues(Collection<?> availableValues)
    {
        this.availableValues = availableValues;
    }

    @Override
    public Object getDefaultValue()
    {
        if (Boolean.class.isAssignableFrom(this.getType()) || boolean.class.isAssignableFrom(this.getType()))
        {
            return false;
        }
        else
            return null;
    }
}
