Author: davsclaus Date: Mon Apr 16 05:31:34 2012 New Revision: 1326487 URL: http://svn.apache.org/viewvc?rev=1326487&view=rev Log: CAMEL-5172: Added TypeConverterSupport as base class to make it easier to implement custom TypeConverter.
Added: camel/trunk/camel-core/src/main/java/org/apache/camel/support/TypeConverterSupport.java Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/ArrayTypeConverter.java camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/AsyncProcessorTypeConverter.java camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/EnumTypeConverter.java camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/FutureTypeConverter.java camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/InstanceMethodFallbackTypeConverter.java camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/InstanceMethodTypeConverter.java camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/StaticMethodFallbackTypeConverter.java camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/StaticMethodTypeConverter.java camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/ToStringTypeConverter.java camel/trunk/camel-core/src/test/java/org/apache/camel/component/bean/issues/MyMessageToProcessorConverter.java camel/trunk/camel-core/src/test/java/org/apache/camel/impl/TypeConverterRegistryMissesThenAddTest.java camel/trunk/camel-core/src/test/java/org/apache/camel/impl/TypeConverterRegistryTest.java camel/trunk/camel-core/src/test/java/org/apache/camel/processor/onexception/OnExceptionWrappedExceptionTest.java Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/ArrayTypeConverter.java URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/ArrayTypeConverter.java?rev=1326487&r1=1326486&r2=1326487&view=diff ============================================================================== --- camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/ArrayTypeConverter.java (original) +++ camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/ArrayTypeConverter.java Mon Apr 16 05:31:34 2012 @@ -23,7 +23,7 @@ import java.util.Collection; import java.util.List; import org.apache.camel.Exchange; -import org.apache.camel.TypeConverter; +import org.apache.camel.support.TypeConverterSupport; /** * A type converter which is used to convert to and from array types @@ -32,10 +32,10 @@ import org.apache.camel.TypeConverter; * * @version */ -public class ArrayTypeConverter implements TypeConverter { +public class ArrayTypeConverter extends TypeConverterSupport { @SuppressWarnings("unchecked") - public <T> T convertTo(Class<T> type, Object value) { + public <T> T convertTo(Class<T> type, Exchange exchange, Object value) { if (type.isArray()) { if (value instanceof Collection) { Collection<?> collection = (Collection<?>)value; @@ -74,36 +74,4 @@ public class ArrayTypeConverter implemen return null; } - @Override - public <T> T convertTo(Class<T> type, Exchange exchange, Object value) { - return convertTo(type, value); - } - - @Override - public <T> T mandatoryConvertTo(Class<T> type, Object value) { - return convertTo(type, value); - } - - @Override - public <T> T mandatoryConvertTo(Class<T> type, Exchange exchange, Object value) { - return convertTo(type, value); - } - - @Override - public <T> T tryConvertTo(Class<T> type, Exchange exchange, Object value) { - try { - return convertTo(type, value); - } catch (Exception e) { - return null; - } - } - - @Override - public <T> T tryConvertTo(Class<T> type, Object value) { - try { - return convertTo(type, value); - } catch (Exception e) { - return null; - } - } } Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/AsyncProcessorTypeConverter.java URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/AsyncProcessorTypeConverter.java?rev=1326487&r1=1326486&r2=1326487&view=diff ============================================================================== --- camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/AsyncProcessorTypeConverter.java (original) +++ camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/AsyncProcessorTypeConverter.java Mon Apr 16 05:31:34 2012 @@ -18,9 +18,8 @@ package org.apache.camel.impl.converter; import org.apache.camel.AsyncProcessor; import org.apache.camel.Exchange; -import org.apache.camel.NoTypeConversionAvailableException; import org.apache.camel.Processor; -import org.apache.camel.TypeConverter; +import org.apache.camel.support.TypeConverterSupport; import org.apache.camel.util.AsyncProcessorConverterHelper; /** @@ -30,10 +29,10 @@ import org.apache.camel.util.AsyncProces * * @version */ -public class AsyncProcessorTypeConverter implements TypeConverter { +public class AsyncProcessorTypeConverter extends TypeConverterSupport { @Override - public <T> T convertTo(Class<T> type, Object value) { + public <T> T convertTo(Class<T> type, Exchange exchange, Object value) { if (value != null) { if (type.equals(AsyncProcessor.class)) { if (value instanceof Processor) { @@ -44,39 +43,6 @@ public class AsyncProcessorTypeConverter return null; } - @Override - public <T> T convertTo(Class<T> type, Exchange exchange, Object value) { - return convertTo(type, value); - } - - @Override - public <T> T mandatoryConvertTo(Class<T> type, Object value) throws NoTypeConversionAvailableException { - return convertTo(type, value); - } - - @Override - public <T> T mandatoryConvertTo(Class<T> type, Exchange exchange, Object value) throws NoTypeConversionAvailableException { - return convertTo(type, exchange, value); - } - - @Override - public <T> T tryConvertTo(Class<T> type, Exchange exchange, Object value) { - try { - return convertTo(type, exchange, value); - } catch (Exception e) { - return null; - } - } - - @Override - public <T> T tryConvertTo(Class<T> type, Object value) { - try { - return convertTo(type, null, value); - } catch (Exception e) { - return null; - } - } - /** * @deprecated use AnycProcessorConverter.convert instead */ Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/EnumTypeConverter.java URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/EnumTypeConverter.java?rev=1326487&r1=1326486&r2=1326487&view=diff ============================================================================== --- camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/EnumTypeConverter.java (original) +++ camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/EnumTypeConverter.java Mon Apr 16 05:31:34 2012 @@ -20,7 +20,7 @@ import java.lang.reflect.Method; import org.apache.camel.Exchange; import org.apache.camel.RuntimeCamelException; -import org.apache.camel.TypeConverter; +import org.apache.camel.support.TypeConverterSupport; import org.apache.camel.util.ObjectHelper; /** @@ -30,10 +30,10 @@ import org.apache.camel.util.ObjectHelpe * * @version */ -public class EnumTypeConverter implements TypeConverter { +public class EnumTypeConverter extends TypeConverterSupport { @SuppressWarnings("unchecked") - public <T> T convertTo(Class<T> type, Object value) { + public <T> T convertTo(Class<T> type, Exchange exchange, Object value) { if (type.isEnum() && value != null) { String text = value.toString(); Method method; @@ -47,40 +47,4 @@ public class EnumTypeConverter implement return null; } - @Override - public <T> T convertTo(Class<T> type, Exchange exchange, Object value) { - // ignore exchange - return convertTo(type, value); - } - - @Override - public <T> T mandatoryConvertTo(Class<T> type, Object value) { - // ignore exchange - return convertTo(type, value); - } - - @Override - public <T> T mandatoryConvertTo(Class<T> type, Exchange exchange, Object value) { - // ignore exchange - return convertTo(type, value); - } - - @Override - public <T> T tryConvertTo(Class<T> type, Exchange exchange, Object value) { - try { - return convertTo(type, value); - } catch (Exception e) { - return null; - } - } - - @Override - public <T> T tryConvertTo(Class<T> type, Object value) { - try { - // ignore exchange - return convertTo(type, value); - } catch (Exception e) { - return null; - } - } } \ No newline at end of file Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/FutureTypeConverter.java URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/FutureTypeConverter.java?rev=1326487&r1=1326486&r2=1326487&view=diff ============================================================================== --- camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/FutureTypeConverter.java (original) +++ camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/FutureTypeConverter.java Mon Apr 16 05:31:34 2012 @@ -20,11 +20,11 @@ import java.util.concurrent.Future; import org.apache.camel.Converter; import org.apache.camel.Exchange; -import org.apache.camel.NoTypeConversionAvailableException; import org.apache.camel.StreamCache; +import org.apache.camel.TypeConversionException; import org.apache.camel.TypeConverter; +import org.apache.camel.support.TypeConverterSupport; import org.apache.camel.util.ExchangeHelper; -import org.apache.camel.util.ObjectHelper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -34,7 +34,7 @@ import org.slf4j.LoggerFactory; * @version */ @Converter -public final class FutureTypeConverter implements TypeConverter { +public final class FutureTypeConverter extends TypeConverterSupport { private static final Logger LOG = LoggerFactory.getLogger(FutureTypeConverter.class); @@ -44,6 +44,15 @@ public final class FutureTypeConverter i this.converter = converter; } + @Override + public <T> T convertTo(Class<T> type, Exchange exchange, Object value) { + try { + return doConvertTo(type, exchange, value); + } catch (Exception e) { + throw new TypeConversionException(value, type, e); + } + } + @SuppressWarnings("unchecked") private <T> T doConvertTo(Class<T> type, Exchange exchange, Object value) throws Exception { // do not convert to stream cache @@ -86,56 +95,4 @@ public final class FutureTypeConverter i return null; } - @Override - public <T> T convertTo(Class<T> type, Object value) { - return convertTo(type, null, value); - } - - @Override - public <T> T convertTo(Class<T> type, Exchange exchange, Object value) { - try { - return doConvertTo(type, exchange, value); - } catch (Exception e) { - throw ObjectHelper.wrapRuntimeCamelException(e); - } - } - - @Override - public <T> T mandatoryConvertTo(Class<T> type, Object value) throws NoTypeConversionAvailableException { - return mandatoryConvertTo(type, null, value); - } - - @Override - public <T> T mandatoryConvertTo(Class<T> type, Exchange exchange, Object value) throws NoTypeConversionAvailableException { - T answer; - try { - answer = doConvertTo(type, exchange, value); - } catch (Exception e) { - throw new NoTypeConversionAvailableException(value, type, e); - } - - if (answer == null) { - throw new NoTypeConversionAvailableException(value, type); - } - - return answer; - } - - @Override - public <T> T tryConvertTo(Class<T> type, Exchange exchange, Object value) { - try { - return convertTo(type, exchange, value); - } catch (Exception e) { - return null; - } - } - - @Override - public <T> T tryConvertTo(Class<T> type, Object value) { - try { - return convertTo(type, null, value); - } catch (Exception e) { - return null; - } - } } Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/InstanceMethodFallbackTypeConverter.java URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/InstanceMethodFallbackTypeConverter.java?rev=1326487&r1=1326486&r2=1326487&view=diff ============================================================================== --- camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/InstanceMethodFallbackTypeConverter.java (original) +++ camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/InstanceMethodFallbackTypeConverter.java Mon Apr 16 05:31:34 2012 @@ -20,8 +20,8 @@ import java.lang.reflect.Method; import org.apache.camel.Exchange; import org.apache.camel.RuntimeCamelException; -import org.apache.camel.TypeConverter; import org.apache.camel.spi.TypeConverterRegistry; +import org.apache.camel.support.TypeConverterSupport; import org.apache.camel.util.ObjectHelper; /** @@ -30,7 +30,7 @@ import org.apache.camel.util.ObjectHelpe * * @version */ -public class InstanceMethodFallbackTypeConverter implements TypeConverter { +public class InstanceMethodFallbackTypeConverter extends TypeConverterSupport { private final CachingInjector<?> injector; private final Method method; private final boolean useExchange; @@ -48,11 +48,6 @@ public class InstanceMethodFallbackTypeC return "InstanceMethodFallbackTypeConverter: " + method; } - @Override - public <T> T convertTo(Class<T> type, Object value) { - return convertTo(type, null, value); - } - @SuppressWarnings("unchecked") public <T> T convertTo(Class<T> type, Exchange exchange, Object value) { Object instance = injector.newInstance(); @@ -64,32 +59,4 @@ public class InstanceMethodFallbackTypeC .invokeMethod(method, instance, type, value, registry); } - @Override - public <T> T mandatoryConvertTo(Class<T> type, Object value) { - return convertTo(type, null, value); - } - - @Override - public <T> T mandatoryConvertTo(Class<T> type, Exchange exchange, Object value) { - return convertTo(type, exchange, value); - } - - @Override - public <T> T tryConvertTo(Class<T> type, Object value) { - try { - return convertTo(type, null, value); - } catch (Exception e) { - return null; - } - } - - @Override - public <T> T tryConvertTo(Class<T> type, Exchange exchange, Object value) { - try { - return convertTo(type, exchange, value); - } catch (Exception e) { - return null; - } - } - } \ No newline at end of file Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/InstanceMethodTypeConverter.java URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/InstanceMethodTypeConverter.java?rev=1326487&r1=1326486&r2=1326487&view=diff ============================================================================== --- camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/InstanceMethodTypeConverter.java (original) +++ camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/InstanceMethodTypeConverter.java Mon Apr 16 05:31:34 2012 @@ -23,6 +23,7 @@ import org.apache.camel.RuntimeCamelExce import org.apache.camel.TypeConverter; import org.apache.camel.spi.TypeConverterAware; import org.apache.camel.spi.TypeConverterRegistry; +import org.apache.camel.support.TypeConverterSupport; import org.apache.camel.util.ObjectHelper; /** @@ -31,7 +32,7 @@ import org.apache.camel.util.ObjectHelpe * * @version */ -public class InstanceMethodTypeConverter implements TypeConverter { +public class InstanceMethodTypeConverter extends TypeConverterSupport { private final CachingInjector<?> injector; private final Method method; private final boolean useExchange; @@ -49,11 +50,6 @@ public class InstanceMethodTypeConverter return "InstanceMethodTypeConverter: " + method; } - @Override - public <T> T convertTo(Class<T> type, Object value) { - return convertTo(type, null, value); - } - @SuppressWarnings("unchecked") public <T> T convertTo(Class<T> type, Exchange exchange, Object value) { Object instance = injector.newInstance(); @@ -72,31 +68,4 @@ public class InstanceMethodTypeConverter .invokeMethod(method, instance, value); } - @Override - public <T> T mandatoryConvertTo(Class<T> type, Object value) { - return convertTo(type, null, value); - } - - @Override - public <T> T mandatoryConvertTo(Class<T> type, Exchange exchange, Object value) { - return convertTo(type, exchange, value); - } - - @Override - public <T> T tryConvertTo(Class<T> type, Exchange exchange, Object value) { - try { - return convertTo(type, exchange, value); - } catch (Exception e) { - return null; - } - } - - @Override - public <T> T tryConvertTo(Class<T> type, Object value) { - try { - return convertTo(type, null, value); - } catch (Exception e) { - return null; - } - } } Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/StaticMethodFallbackTypeConverter.java URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/StaticMethodFallbackTypeConverter.java?rev=1326487&r1=1326486&r2=1326487&view=diff ============================================================================== --- camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/StaticMethodFallbackTypeConverter.java (original) +++ camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/StaticMethodFallbackTypeConverter.java Mon Apr 16 05:31:34 2012 @@ -19,8 +19,8 @@ package org.apache.camel.impl.converter; import java.lang.reflect.Method; import org.apache.camel.Exchange; -import org.apache.camel.TypeConverter; import org.apache.camel.spi.TypeConverterRegistry; +import org.apache.camel.support.TypeConverterSupport; import org.apache.camel.util.ObjectHelper; /** @@ -29,7 +29,7 @@ import org.apache.camel.util.ObjectHelpe * * @version */ -public class StaticMethodFallbackTypeConverter implements TypeConverter { +public class StaticMethodFallbackTypeConverter extends TypeConverterSupport { private final Method method; private final boolean useExchange; private final TypeConverterRegistry registry; @@ -45,42 +45,10 @@ public class StaticMethodFallbackTypeCon return "StaticMethodFallbackTypeConverter: " + method; } - @Override - public <T> T convertTo(Class<T> type, Object value) { - return convertTo(type, null, value); - } - @SuppressWarnings("unchecked") public <T> T convertTo(Class<T> type, Exchange exchange, Object value) { return useExchange ? (T)ObjectHelper.invokeMethod(method, null, type, exchange, value, registry) : (T)ObjectHelper.invokeMethod(method, null, type, value, registry); } - @Override - public <T> T mandatoryConvertTo(Class<T> type, Object value) { - return convertTo(type, null, value); - } - - @Override - public <T> T mandatoryConvertTo(Class<T> type, Exchange exchange, Object value) { - return convertTo(type, exchange, value); - } - - @Override - public <T> T tryConvertTo(Class<T> type, Exchange exchange, Object value) { - try { - return convertTo(type, exchange, value); - } catch (Exception e) { - return null; - } - } - - @Override - public <T> T tryConvertTo(Class<T> type, Object value) { - try { - return convertTo(type, null, value); - } catch (Exception e) { - return null; - } - } } \ No newline at end of file Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/StaticMethodTypeConverter.java URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/StaticMethodTypeConverter.java?rev=1326487&r1=1326486&r2=1326487&view=diff ============================================================================== --- camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/StaticMethodTypeConverter.java (original) +++ camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/StaticMethodTypeConverter.java Mon Apr 16 05:31:34 2012 @@ -20,6 +20,7 @@ import java.lang.reflect.Method; import org.apache.camel.Exchange; import org.apache.camel.TypeConverter; +import org.apache.camel.support.TypeConverterSupport; import org.apache.camel.util.ObjectHelper; /** @@ -27,7 +28,7 @@ import org.apache.camel.util.ObjectHelpe * * @version */ -public class StaticMethodTypeConverter implements TypeConverter { +public class StaticMethodTypeConverter extends TypeConverterSupport { private final Method method; private final boolean useExchange; @@ -41,42 +42,10 @@ public class StaticMethodTypeConverter i return "StaticMethodTypeConverter: " + method; } - @Override - public <T> T convertTo(Class<T> type, Object value) { - return convertTo(type, null, value); - } - @SuppressWarnings("unchecked") public <T> T convertTo(Class<T> type, Exchange exchange, Object value) { return useExchange ? (T)ObjectHelper.invokeMethod(method, null, value, exchange) : (T)ObjectHelper.invokeMethod(method, null, value); } - @Override - public <T> T mandatoryConvertTo(Class<T> type, Object value) { - return convertTo(type, null, value); - } - - @Override - public <T> T mandatoryConvertTo(Class<T> type, Exchange exchange, Object value) { - return convertTo(type, exchange, value); - } - - @Override - public <T> T tryConvertTo(Class<T> type, Exchange exchange, Object value) { - try { - return convertTo(type, exchange, value); - } catch (Exception e) { - return null; - } - } - - @Override - public <T> T tryConvertTo(Class<T> type, Object value) { - try { - return convertTo(type, null, value); - } catch (Exception e) { - return null; - } - } } Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/ToStringTypeConverter.java URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/ToStringTypeConverter.java?rev=1326487&r1=1326486&r2=1326487&view=diff ============================================================================== --- camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/ToStringTypeConverter.java (original) +++ camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/ToStringTypeConverter.java Mon Apr 16 05:31:34 2012 @@ -20,9 +20,9 @@ import java.util.concurrent.Future; import org.apache.camel.Exchange; import org.apache.camel.Message; -import org.apache.camel.TypeConverter; import org.apache.camel.WrappedFile; import org.apache.camel.component.bean.BeanInvocation; +import org.apache.camel.support.TypeConverterSupport; /** * A simple converter that can convert any object to a String type by using the @@ -30,11 +30,11 @@ import org.apache.camel.component.bean.B * * @version */ -public class ToStringTypeConverter implements TypeConverter { +public class ToStringTypeConverter extends TypeConverterSupport { @SuppressWarnings("unchecked") @Override - public <T> T convertTo(Class<T> toType, Object value) { + public <T> T convertTo(Class<T> toType, Exchange exchange, Object value) { if (value != null) { // should not try to convert Message @@ -64,36 +64,4 @@ public class ToStringTypeConverter imple return null; } - @Override - public <T> T convertTo(Class<T> type, Exchange exchange, Object value) { - return convertTo(type, value); - } - - @Override - public <T> T mandatoryConvertTo(Class<T> type, Object value) { - return convertTo(type, value); - } - - @Override - public <T> T mandatoryConvertTo(Class<T> type, Exchange exchange, Object value) { - return convertTo(type, value); - } - - @Override - public <T> T tryConvertTo(Class<T> type, Exchange exchange, Object value) { - try { - return convertTo(type, value); - } catch (Exception e) { - return null; - } - } - - @Override - public <T> T tryConvertTo(Class<T> type, Object value) { - try { - return convertTo(type, value); - } catch (Exception e) { - return null; - } - } } Added: camel/trunk/camel-core/src/main/java/org/apache/camel/support/TypeConverterSupport.java URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/support/TypeConverterSupport.java?rev=1326487&view=auto ============================================================================== --- camel/trunk/camel-core/src/main/java/org/apache/camel/support/TypeConverterSupport.java (added) +++ camel/trunk/camel-core/src/main/java/org/apache/camel/support/TypeConverterSupport.java Mon Apr 16 05:31:34 2012 @@ -0,0 +1,76 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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 org.apache.camel.support; + +import org.apache.camel.Exchange; +import org.apache.camel.NoTypeConversionAvailableException; +import org.apache.camel.TypeConversionException; +import org.apache.camel.TypeConverter; + +/** + * Base class for {@link TypeConverter} implementations. + * <p/> + * Implementators need only to implement the {@link TypeConverter#convertTo(Class, org.apache.camel.Exchange, Object)} + * method, and can rely on the default implementations of the other methods from this support class. + */ +public abstract class TypeConverterSupport implements TypeConverter { + + @Override + public <T> T convertTo(Class<T> type, Object value) throws TypeConversionException { + return convertTo(type, null, value); + } + + @Override + public <T> T mandatoryConvertTo(Class<T> type, Object value) throws TypeConversionException, NoTypeConversionAvailableException { + T t = convertTo(type, null, value); + if (t == null) { + throw new NoTypeConversionAvailableException(value, type); + } else { + return t; + } + } + + @Override + public <T> T mandatoryConvertTo(Class<T> type, Exchange exchange, Object value) throws TypeConversionException, NoTypeConversionAvailableException { + T t = convertTo(type, exchange, value); + if (t == null) { + throw new NoTypeConversionAvailableException(value, type); + } else { + return t; + } + } + + @Override + public <T> T tryConvertTo(Class<T> type, Object value) { + try { + return convertTo(type, null, value); + } catch (Exception e) { + // ignore + } + return null; + } + + @Override + public <T> T tryConvertTo(Class<T> type, Exchange exchange, Object value) { + try { + return convertTo(type, exchange, value); + } catch (Exception e) { + // ignore + } + return null; + } +} Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/component/bean/issues/MyMessageToProcessorConverter.java URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/component/bean/issues/MyMessageToProcessorConverter.java?rev=1326487&r1=1326486&r2=1326487&view=diff ============================================================================== --- camel/trunk/camel-core/src/test/java/org/apache/camel/component/bean/issues/MyMessageToProcessorConverter.java (original) +++ camel/trunk/camel-core/src/test/java/org/apache/camel/component/bean/issues/MyMessageToProcessorConverter.java Mon Apr 16 05:31:34 2012 @@ -17,17 +17,16 @@ package org.apache.camel.component.bean.issues; import org.apache.camel.Exchange; -import org.apache.camel.NoTypeConversionAvailableException; import org.apache.camel.Processor; -import org.apache.camel.TypeConverter; +import org.apache.camel.support.TypeConverterSupport; /** * @version */ -public class MyMessageToProcessorConverter implements TypeConverter { +public class MyMessageToProcessorConverter extends TypeConverterSupport { @SuppressWarnings("unchecked") - public <T> T convertTo(Class<T> type, Object value) { + public <T> T convertTo(Class<T> type, Exchange exchange, Object value) { return (T) new Processor() { public void process(Exchange exchange) throws Exception { exchange.getIn().setBody("Bye World"); @@ -35,24 +34,4 @@ public class MyMessageToProcessorConvert }; } - public <T> T convertTo(Class<T> type, Exchange exchange, Object value) { - return convertTo(type, value); - } - - public <T> T mandatoryConvertTo(Class<T> type, Object value) throws NoTypeConversionAvailableException { - return convertTo(type, value); - } - - public <T> T mandatoryConvertTo(Class<T> type, Exchange exchange, Object value) throws NoTypeConversionAvailableException { - return convertTo(type, value); - } - - public <T> T tryConvertTo(Class<T> type, Object value) { - return convertTo(type, value); - } - - public <T> T tryConvertTo(Class<T> type, Exchange exchange, Object value) { - return convertTo(type, value); - } - } Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/impl/TypeConverterRegistryMissesThenAddTest.java URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/impl/TypeConverterRegistryMissesThenAddTest.java?rev=1326487&r1=1326486&r2=1326487&view=diff ============================================================================== --- camel/trunk/camel-core/src/test/java/org/apache/camel/impl/TypeConverterRegistryMissesThenAddTest.java (original) +++ camel/trunk/camel-core/src/test/java/org/apache/camel/impl/TypeConverterRegistryMissesThenAddTest.java Mon Apr 16 05:31:34 2012 @@ -18,7 +18,7 @@ package org.apache.camel.impl; import junit.framework.TestCase; import org.apache.camel.Exchange; -import org.apache.camel.TypeConverter; +import org.apache.camel.support.TypeConverterSupport; /** * @version @@ -52,38 +52,16 @@ public class TypeConverterRegistryMisses } } - private static class MyOrderTypeConverter implements TypeConverter { + private static class MyOrderTypeConverter extends TypeConverterSupport { @SuppressWarnings("unchecked") - public <T> T convertTo(Class<T> type, Object value) { + public <T> T convertTo(Class<T> type, Exchange exchange, Object value) { // converter from value to the MyOrder bean MyOrder order = new MyOrder(); order.setId(Integer.parseInt(value.toString())); return (T) order; } - public <T> T convertTo(Class<T> type, Exchange exchange, Object value) { - // this method with the Exchange parameter will be preferred by Camel to invoke - // this allows you to fetch information from the exchange during conversions - // such as an encoding parameter or the likes - return convertTo(type, value); - } - - public <T> T mandatoryConvertTo(Class<T> type, Object value) { - return convertTo(type, value); - } - - public <T> T mandatoryConvertTo(Class<T> type, Exchange exchange, Object value) { - return convertTo(type, value); - } - - public <T> T tryConvertTo(Class<T> type, Exchange exchange, Object value) { - return convertTo(type, value); - } - - public <T> T tryConvertTo(Class<T> type, Object value) { - return convertTo(type, value); - } } } Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/impl/TypeConverterRegistryTest.java URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/impl/TypeConverterRegistryTest.java?rev=1326487&r1=1326486&r2=1326487&view=diff ============================================================================== --- camel/trunk/camel-core/src/test/java/org/apache/camel/impl/TypeConverterRegistryTest.java (original) +++ camel/trunk/camel-core/src/test/java/org/apache/camel/impl/TypeConverterRegistryTest.java Mon Apr 16 05:31:34 2012 @@ -22,6 +22,7 @@ import java.io.InputStream; import junit.framework.TestCase; import org.apache.camel.Exchange; import org.apache.camel.TypeConverter; +import org.apache.camel.support.TypeConverterSupport; /** * @version @@ -32,7 +33,7 @@ public class TypeConverterRegistryTest e DefaultCamelContext ctx = new DefaultCamelContext(); assertNotNull(ctx.getTypeConverterRegistry()); - // file to inputstream is a default converter in Camel + // file to input stream is a default converter in Camel TypeConverter tc = ctx.getTypeConverterRegistry().lookup(InputStream.class, File.class); assertNotNull(tc); } @@ -66,46 +67,15 @@ public class TypeConverterRegistryTest e } // START SNIPPET: e2 - private static class MyOrderTypeConverter implements TypeConverter { + private static class MyOrderTypeConverter extends TypeConverterSupport { @SuppressWarnings("unchecked") - public <T> T convertTo(Class<T> type, Object value) { + public <T> T convertTo(Class<T> type, Exchange exchange, Object value) { // converter from value to the MyOrder bean MyOrder order = new MyOrder(); order.setId(Integer.parseInt(value.toString())); return (T) order; } - - public <T> T convertTo(Class<T> type, Exchange exchange, Object value) { - // this method with the Exchange parameter will be preferred by Camel to invoke - // this allows you to fetch information from the exchange during conversions - // such as an encoding parameter or the likes - return convertTo(type, value); - } - - public <T> T mandatoryConvertTo(Class<T> type, Object value) { - return convertTo(type, value); - } - - public <T> T mandatoryConvertTo(Class<T> type, Exchange exchange, Object value) { - return convertTo(type, value); - } - - public <T> T tryConvertTo(Class<T> type, Object value) { - try { - return convertTo(type, null, value); - } catch (Exception e) { - return null; - } - } - - public <T> T tryConvertTo(Class<T> type, Exchange exchange, Object value) { - try { - return convertTo(type, exchange, value); - } catch (Exception e) { - return null; - } - } } // END SNIPPET: e2 Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/processor/onexception/OnExceptionWrappedExceptionTest.java URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/onexception/OnExceptionWrappedExceptionTest.java?rev=1326487&r1=1326486&r2=1326487&view=diff ============================================================================== --- camel/trunk/camel-core/src/test/java/org/apache/camel/processor/onexception/OnExceptionWrappedExceptionTest.java (original) +++ camel/trunk/camel-core/src/test/java/org/apache/camel/processor/onexception/OnExceptionWrappedExceptionTest.java Mon Apr 16 05:31:34 2012 @@ -18,8 +18,9 @@ package org.apache.camel.processor.onexc import org.apache.camel.ContextTestSupport; import org.apache.camel.Exchange; -import org.apache.camel.TypeConverter; import org.apache.camel.builder.RouteBuilder; +import org.apache.camel.support.TypeConverterSupport; + import static org.apache.camel.util.ObjectHelper.wrapRuntimeCamelException; /** @@ -56,32 +57,13 @@ public class OnExceptionWrappedException public static class LocalDateTime { } - private static class MyLocalDateTimeConverter implements TypeConverter { + private static class MyLocalDateTimeConverter extends TypeConverterSupport { - public <T> T convertTo(Class<T> type, Object value) { + public <T> T convertTo(Class<T> type, Exchange exchange, Object value) { // simulate @Converter where we wrap thrown exception in RuntimeCamelException throw wrapRuntimeCamelException(new IllegalArgumentException("Bad Data")); } - public <T> T convertTo(Class<T> type, Exchange exchange, Object value) { - return convertTo(type, value); - } - - public <T> T mandatoryConvertTo(Class<T> type, Object value) { - return convertTo(type, value); - } - - public <T> T mandatoryConvertTo(Class<T> type, Exchange exchange, Object value) { - return convertTo(type, value); - } - - public <T> T tryConvertTo(Class<T> type, Object value) { - return convertTo(type, value); - } - - public <T> T tryConvertTo(Class<T> type, Exchange exchange, Object value) { - return convertTo(type, value); - } } } \ No newline at end of file