Repository: camel Updated Branches: refs/heads/master c6a15565a -> d569b80d8
CAMEL-10915 Add type conversion support for jav... ...a.net.URI Adds converter to and from `java.net.URI` and `java.lang.CharSequence`. Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/d569b80d Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/d569b80d Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/d569b80d Branch: refs/heads/master Commit: d569b80d81b200ca83a1f7e56d5e20c6f59f6427 Parents: c6a1556 Author: Zoran Regvart <zregv...@apache.org> Authored: Wed Mar 1 12:17:52 2017 +0100 Committer: Zoran Regvart <zregv...@apache.org> Committed: Wed Mar 1 12:20:49 2017 +0100 ---------------------------------------------------------------------- .../converter/CorePackageScanClassResolver.java | 1 + .../camel/impl/converter/UriTypeConverter.java | 53 +++++++++++++++++++ .../impl/converter/UriTypeConverterTest.java | 54 ++++++++++++++++++++ 3 files changed, 108 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/d569b80d/camel-core/src/main/java/org/apache/camel/impl/converter/CorePackageScanClassResolver.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/impl/converter/CorePackageScanClassResolver.java b/camel-core/src/main/java/org/apache/camel/impl/converter/CorePackageScanClassResolver.java index ed11fa9..65ec445 100644 --- a/camel-core/src/main/java/org/apache/camel/impl/converter/CorePackageScanClassResolver.java +++ b/camel-core/src/main/java/org/apache/camel/impl/converter/CorePackageScanClassResolver.java @@ -77,6 +77,7 @@ public class CorePackageScanClassResolver implements PackageScanClassResolver { converters.add(GenericFileConverter.class); converters.add(DurationConverter.class); converters.add(AttachmentConverter.class); + converters.add(UriTypeConverter.class); } @Override http://git-wip-us.apache.org/repos/asf/camel/blob/d569b80d/camel-core/src/main/java/org/apache/camel/impl/converter/UriTypeConverter.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/impl/converter/UriTypeConverter.java b/camel-core/src/main/java/org/apache/camel/impl/converter/UriTypeConverter.java new file mode 100644 index 0000000..aab8e14 --- /dev/null +++ b/camel-core/src/main/java/org/apache/camel/impl/converter/UriTypeConverter.java @@ -0,0 +1,53 @@ +/** + * 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.impl.converter; + +import java.net.URI; +import java.net.URISyntaxException; + +import org.apache.camel.Converter; +import org.apache.camel.TypeConversionException; +import org.apache.camel.TypeConverter; + +/** + * A {@link TypeConverter} that converts to and from {@link URI}s. + */ +public class UriTypeConverter { + + @Converter + public static CharSequence toCharSequence(final Object value) { + final URI uri = toUri(value); + + return uri.toString(); + } + + @Converter + public static URI toUri(final Object value) { + if (value instanceof URI) { + return (URI)value; + } + + final String stringValue = String.valueOf(value); + + try { + return new URI(stringValue); + } catch (final URISyntaxException e) { + throw new TypeConversionException(value, URI.class, e); + } + } + +} http://git-wip-us.apache.org/repos/asf/camel/blob/d569b80d/camel-core/src/test/java/org/apache/camel/impl/converter/UriTypeConverterTest.java ---------------------------------------------------------------------- diff --git a/camel-core/src/test/java/org/apache/camel/impl/converter/UriTypeConverterTest.java b/camel-core/src/test/java/org/apache/camel/impl/converter/UriTypeConverterTest.java new file mode 100644 index 0000000..9cb4289 --- /dev/null +++ b/camel-core/src/test/java/org/apache/camel/impl/converter/UriTypeConverterTest.java @@ -0,0 +1,54 @@ +/** + * 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.impl.converter; + +import java.net.URI; + +import org.apache.camel.TypeConversionException; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; + +public class UriTypeConverterTest { + + static final String EXAMPLE = "http://www.example.com"; + + static final URI EXAMPLE_URI = URI.create(EXAMPLE); + + static final String INVALID = ":"; + + @Test(expected = TypeConversionException.class) + public void shouldComplainOnInvalidStringUrisConvertingToStrings() { + UriTypeConverter.toCharSequence(INVALID); + } + + @Test(expected = TypeConversionException.class) + public void shouldComplainOnInvalidStringUrisConvertingToUri() { + UriTypeConverter.toUri(INVALID); + } + + @Test + public void shouldConvertFromStringsToUris() { + assertEquals(EXAMPLE_URI, UriTypeConverter.toUri(EXAMPLE)); + } + + @Test + public void shouldConvertFromUrisToStrings() { + assertEquals(EXAMPLE, UriTypeConverter.toCharSequence(EXAMPLE_URI)); + } + +}