/*
* Copyright 2002-2006 the original author or authors.
*
* 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 com.nfwork.dbfound.json.converter;
import java.util.HashMap;
import java.util.Map;
/**
* @author Andres Almiray
*/
@SuppressWarnings("unchecked")
public class ConverterRegistry
{
private static Map converters = new HashMap();
static{
converters.put( Boolean.TYPE, new BooleanConverter( false ) );
converters.put( boolean.class, new BooleanConverter( false ) );
converters.put( boolean[].class, new BooleanArrayConverter( false ) );
converters.put( Boolean[].class, new BooleanObjectArrayConverter( false ) );
converters.put( Character.TYPE, new CharConverter( '\0' ) );
converters.put( char.class, new CharConverter( '\0' ) );
converters.put( char[].class, new CharArrayConverter( '\0' ) );
converters.put( Character[].class, new CharObjectArrayConverter( '\0' ) );
converters.put( Byte.TYPE, new ByteConverter( (byte) 0 ) );
converters.put( byte.class, new ByteConverter( (byte) 0 ) );
converters.put( byte[].class, new ByteArrayConverter( (byte) 0 ) );
converters.put( Byte[].class, new NumberConverter( Byte.class, new Byte( (byte) 0 ) ) );
converters.put( Short.TYPE, new ShortConverter( (short) 0 ) );
converters.put( short.class, new ShortConverter( (short) 0 ) );
converters.put( short[].class, new ShortArrayConverter( (short) 0 ) );
converters.put( Short[].class, new NumberConverter( Short.class, new Short( (short) 0 ) ) );
converters.put( Integer.TYPE, new IntConverter( 0 ) );
converters.put( int.class, new IntConverter( 0 ) );
converters.put( int[].class, new IntArrayConverter( 0 ) );
converters.put( Integer[].class, new NumberConverter( Integer.class, new Integer( 0 ) ) );
converters.put( Long.TYPE, new LongConverter( 0 ) );
converters.put( long.class, new LongConverter( 0 ) );
converters.put( long[].class, new LongArrayConverter( 0 ) );
converters.put( Long[].class, new NumberConverter( Long.class, new Long( 0 ) ) );
converters.put( Float.TYPE, new FloatConverter( 0 ) );
converters.put( float.class, new FloatConverter( 0 ) );
converters.put( float[].class, new FloatArrayConverter( 0 ) );
converters.put( Float[].class, new NumberConverter( Float.class, new Float( 0 ) ) );
converters.put( Double.TYPE, new DoubleConverter( 0 ) );
converters.put( double.class, new DoubleConverter( 0 ) );
converters.put( double[].class, new DoubleArrayConverter( 0 ) );
converters.put( Double[].class, new NumberConverter( Double.class, new Double( 0 ) ) );
}
public static Converter getConverterFor( Class type )
{
return (Converter) converters.get( type );
}
public static Class getInnerComponentType( Class type )
{
if( !type.isArray() ){
return type;
}
return getInnerComponentType( type.getComponentType() );
}
public static void removeConverterFor( Class type )
{
converters.remove( type );
}
public static void setConverterFor( Class type, Converter converter )
{
converters.put( type, converter );
}
private ConverterRegistry()
{
}
}