You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2016/08/02 15:03:13 UTC
camel git commit: CAMEL-10168: camel-aws ignores type converter
loading error if the end user have opted-out some of the AWS features by not
having the uber JAR but specialized JARs
Repository: camel
Updated Branches:
refs/heads/master 213e351bc -> 00fef5857
CAMEL-10168: camel-aws ignores type converter loading error if the end user have opted-out some of the AWS features by not having the uber JAR but specialized JARs
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/00fef585
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/00fef585
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/00fef585
Branch: refs/heads/master
Commit: 00fef5857c0bcb0fc7a02f19f5ba51ef0382133d
Parents: 213e351
Author: Claus Ibsen <da...@apache.org>
Authored: Tue Aug 2 17:03:01 2016 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Tue Aug 2 17:03:01 2016 +0200
----------------------------------------------------------------------
.../src/main/java/org/apache/camel/Converter.java | 13 +++++++++++++
.../impl/converter/AnnotationTypeConverterLoader.java | 14 +++++++++++++-
.../aws/ddbstream/StringSequenceNumberConverter.java | 3 ++-
.../component/aws/kinesis/RecordStringConverter.java | 3 ++-
4 files changed, 30 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/00fef585/camel-core/src/main/java/org/apache/camel/Converter.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/Converter.java b/camel-core/src/main/java/org/apache/camel/Converter.java
index 1652e77..5c83841 100644
--- a/camel-core/src/main/java/org/apache/camel/Converter.java
+++ b/camel-core/src/main/java/org/apache/camel/Converter.java
@@ -39,4 +39,17 @@ public @interface Converter {
* Whether or not returning <tt>null</tt> is a valid response.
*/
boolean allowNull() default false;
+
+ /**
+ * Whether to ignore the type converter if it cannot be loaded for some reason.
+ * <p/>
+ * This can be used if a Camel component provides multiple components
+ * where the end user can opt-out some of these components by excluding
+ * dependencies on the classpath, meaning the type converter would not
+ * be able to load due class not found errors. But in those cases its
+ * okay as the component is opted-out.
+ * <p/>
+ * Important this configuration must be set on the class-level, not on the method.
+ */
+ boolean ignoreOnLoadError() default false;
}
http://git-wip-us.apache.org/repos/asf/camel/blob/00fef585/camel-core/src/main/java/org/apache/camel/impl/converter/AnnotationTypeConverterLoader.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/impl/converter/AnnotationTypeConverterLoader.java b/camel-core/src/main/java/org/apache/camel/impl/converter/AnnotationTypeConverterLoader.java
index c724870..eb1bd4b 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/converter/AnnotationTypeConverterLoader.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/converter/AnnotationTypeConverterLoader.java
@@ -285,7 +285,19 @@ public class AnnotationTypeConverterLoader implements TypeConverterLoader {
loadConverterMethods(registry, superclass);
}
} catch (NoClassDefFoundError e) {
- LOG.warn("Ignoring converter type: " + type.getCanonicalName() + " as a dependent class could not be found: " + e, e);
+ boolean ignore = false;
+ // does the class allow to ignore the type converter when having load errors
+ if (ObjectHelper.hasAnnotation(type, Converter.class, true)) {
+ if (type.getAnnotation(Converter.class) != null) {
+ ignore = type.getAnnotation(Converter.class).ignoreOnLoadError();
+ }
+ }
+ // if we should ignore then only log at debug level
+ if (ignore) {
+ LOG.debug("Ignoring converter type: " + type.getCanonicalName() + " as a dependent class could not be found: " + e, e);
+ } else {
+ LOG.warn("Ignoring converter type: " + type.getCanonicalName() + " as a dependent class could not be found: " + e, e);
+ }
}
}
http://git-wip-us.apache.org/repos/asf/camel/blob/00fef585/components/camel-aws/src/main/java/org/apache/camel/component/aws/ddbstream/StringSequenceNumberConverter.java
----------------------------------------------------------------------
diff --git a/components/camel-aws/src/main/java/org/apache/camel/component/aws/ddbstream/StringSequenceNumberConverter.java b/components/camel-aws/src/main/java/org/apache/camel/component/aws/ddbstream/StringSequenceNumberConverter.java
index 0048ce0..d6e55c8 100644
--- a/components/camel-aws/src/main/java/org/apache/camel/component/aws/ddbstream/StringSequenceNumberConverter.java
+++ b/components/camel-aws/src/main/java/org/apache/camel/component/aws/ddbstream/StringSequenceNumberConverter.java
@@ -18,7 +18,8 @@ package org.apache.camel.component.aws.ddbstream;
import org.apache.camel.Converter;
-@Converter
+// Allow to ignore this type converter if the ddbstream JARs are not present on the classpath
+@Converter(ignoreOnLoadError = true)
public final class StringSequenceNumberConverter {
private StringSequenceNumberConverter() {
http://git-wip-us.apache.org/repos/asf/camel/blob/00fef585/components/camel-aws/src/main/java/org/apache/camel/component/aws/kinesis/RecordStringConverter.java
----------------------------------------------------------------------
diff --git a/components/camel-aws/src/main/java/org/apache/camel/component/aws/kinesis/RecordStringConverter.java b/components/camel-aws/src/main/java/org/apache/camel/component/aws/kinesis/RecordStringConverter.java
index 19b8590..df2f016 100644
--- a/components/camel-aws/src/main/java/org/apache/camel/component/aws/kinesis/RecordStringConverter.java
+++ b/components/camel-aws/src/main/java/org/apache/camel/component/aws/kinesis/RecordStringConverter.java
@@ -22,7 +22,8 @@ import java.nio.charset.Charset;
import com.amazonaws.services.kinesis.model.Record;
import org.apache.camel.Converter;
-@Converter
+// Allow to ignore this type converter if the kinesis JARs are not present on the classpath
+@Converter(ignoreOnLoadError = true)
public final class RecordStringConverter {
private RecordStringConverter() {