/*** * Copyright (c) 2009 Caelum - www.caelum.com.br/opensource * All rights reserved. * * 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 br.com.caelum.vraptor.core; import br.com.caelum.vraptor.TwoWayConverter; import br.com.caelum.vraptor.converter.Converter; /** * Represents a collection of all converters registered by VRaptor. When the application * starts, the {@link #register(Class)} method is called to register all converters found. * Before registration the default implementation check the priority of each converter, * and in the case of multiple converter for the same type, only the converter with highest * priority will registered. * * @author Guilherme Silveira */ public interface Converters { /** * Extracts a converter for this specific type. */ <T> Converter<T> to(Class<T> type); /** * Register a converter. Implementations must guarantee that converters * are registered always keeping its priority. * @param converterClass */ void register(Class<? extends Converter<?>> converterClass); /** * Returns true if a converter exists for the type. */ boolean existsFor(Class<?> type); boolean existsTwoWayFor(Class<?> type); TwoWayConverter<?> twoWayConverterFor(Class<?> type); }