/* * #%L * Wisdom-Framework * %% * Copyright (C) 2013 - 2014 Wisdom Framework * %% * 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. * #L% */ package org.wisdom.content.converters; import org.wisdom.api.content.ParameterConverter; /** * A converter for character. Unlike other primitive types, characters cannot be created using 'valueOf'. Notice that * only input having a length of 1 can be converted to characters. Other inputs are rejected. */ public final class CharacterConverter implements ParameterConverter<Character> { /** * The converter. */ public static final CharacterConverter INSTANCE = new CharacterConverter(); private CharacterConverter() { // No direct instantiation } @Override public Character fromString(String input) throws IllegalArgumentException { if (input == null) { throw new NullPointerException("input must not be null"); } if (input.length() != 1) { throw new IllegalArgumentException("The input string \"" + input + "\" cannot be converted to a " + "character. The input's length must be 1"); } return input.toCharArray()[0]; } @Override public Class<Character> getType() { return Character.class; } }