private Converter getImplicitConverter()

in impl/src/main/java/org/apache/geronimo/config/ConfigImpl.java [162:189]


    private <T> Converter getImplicitConverter(Class<T> asType) {
        Converter converter = implicitConverters.get(asType);
        if (converter == null) {
            synchronized (implicitConverters) {
                converter = implicitConverters.get(asType);
                if (converter == null) {
                    if (asType.isArray()) {
                        Converter singleItemConverter = getConverter(asType.getComponentType());
                        if (singleItemConverter == null) {
                            return null;
                        }
                        else {
                            converter = new ImplicitConverter.ImplicitArrayConverter(singleItemConverter, asType.getComponentType());
                            implicitConverters.putIfAbsent(asType, converter);
                        }
                    }
                    else {
                        // try to check whether the class is an 'implicit converter'
                        converter = ImplicitConverter.getImplicitConverter(asType);
                        if (converter != null) {
                            implicitConverters.putIfAbsent(asType, converter);
                        }
                    }
                }
            }
        }
        return converter;
    }