001/**
002 * Licensed to the Apache Software Foundation (ASF) under one or more
003 * contributor license agreements.  See the NOTICE file distributed with
004 * this work for additional information regarding copyright ownership.
005 * The ASF licenses this file to You under the Apache License, Version 2.0
006 * (the "License"); you may not use this file except in compliance with
007 * the License.  You may obtain a copy of the License at
008 *
009 *      http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017package org.apache.camel.impl.converter;
018
019import org.apache.camel.spi.FactoryFinder;
020import org.apache.camel.spi.Injector;
021import org.apache.camel.spi.PackageScanClassResolver;
022
023/**
024 * Default implementation of a type converter registry used for
025 * <a href="http://camel.apache.org/type-converter.html">type converters</a> in Camel.
026 * <p/>
027 * This implementation will load type converters up-front on startup.
028 *
029 * @version 
030 */
031public class DefaultTypeConverter extends BaseTypeConverterRegistry {
032
033    public DefaultTypeConverter(PackageScanClassResolver resolver, Injector injector, FactoryFinder factoryFinder) {
034        super(resolver, injector, factoryFinder);
035    }
036
037    @Override
038    public boolean allowNull() {
039        return false;
040    }
041
042    @Override
043    public boolean isRunAllowed() {
044        // as type converter is used during initialization then allow it to always run
045        return true;
046    }
047
048    @Override
049    protected void doStart() throws Exception {
050        super.doStart();
051        // load type converters up front
052        loadCoreTypeConverters();
053        loadTypeConverters();
054
055        // report how many type converters we have loaded
056        log.info("Loaded {} type converters", typeMappings.size());
057    }
058
059}