You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by lb...@apache.org on 2017/08/24 14:08:34 UTC
[2/2] camel git commit: ComponentExtension : allow to unwrap to
concrete extension.
ComponentExtension : allow to unwrap to concrete extension.
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/4da9afdb
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/4da9afdb
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/4da9afdb
Branch: refs/heads/master
Commit: 4da9afdb8adb7163131c0aba3d8d2d2f8e9342e0
Parents: 60d0ed8
Author: lburgazzoli <lb...@gmail.com>
Authored: Thu Aug 24 16:06:00 2017 +0200
Committer: lburgazzoli <lb...@gmail.com>
Committed: Thu Aug 24 16:08:23 2017 +0200
----------------------------------------------------------------------
.../component/extension/ComponentExtension.java | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/4da9afdb/camel-core/src/main/java/org/apache/camel/component/extension/ComponentExtension.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/component/extension/ComponentExtension.java b/camel-core/src/main/java/org/apache/camel/component/extension/ComponentExtension.java
index 8d90d31..fca2371 100644
--- a/camel-core/src/main/java/org/apache/camel/component/extension/ComponentExtension.java
+++ b/camel-core/src/main/java/org/apache/camel/component/extension/ComponentExtension.java
@@ -23,4 +23,20 @@ package org.apache.camel.component.extension;
* ServiceMetaData.
*/
public interface ComponentExtension {
+ /**
+ * Access the underlying concrete ComponentExtension implementation to
+ * provide access to further features.
+ *
+ * @param clazz the proprietary class or interface of the underlying concrete ComponentExtension.
+ * @return an instance of the underlying concrete ComponentExtension as the required type.
+ */
+ default <T extends ComponentExtension> T unwrap(Class<T> clazz) {
+ if (ComponentExtension.class.isAssignableFrom(clazz)) {
+ return clazz.cast(this);
+ }
+
+ throw new IllegalArgumentException(
+ "Unable to unwrap this ComponentExtension type (" + getClass() + ") to the required type (" + clazz + ")"
+ );
+ }
}