You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ac...@apache.org on 2018/12/04 07:52:27 UTC

[camel] branch sandbox/camel-3.x updated (98b39cf -> 32919f0)

This is an automated email from the ASF dual-hosted git repository.

acosentino pushed a change to branch sandbox/camel-3.x
in repository https://gitbox.apache.org/repos/asf/camel.git.


    from 98b39cf  Regen
     new 3d2d263  [IPFS] Add initial support for IPFS
     new 7623ad0  Changed IPFS component to 3.0.0-SNAPSHOT
     new 149bdc8  CAMEL-12810 - Added explicit repository for Nessus and Spring Boot starter related
     new 191403d  Changed ipfs component starter to 3.0.0-SNAPSHOT
     new 85fca03  CAMEL-12810 - Added camel-ipfs to kit
     new ce01bc4  CAMEL-12810 - Fixed CS
     new 4a31f20  Camel-ipfs: Fixed the backport to 3.x
     new 32919f0  Regen

The 8 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 apache-camel/src/main/descriptors/common-bin.xml   |   2 +
 bom/camel-bom/pom.xml                              |  10 +
 .../src/main/docs/ahc-ws-component.adoc            |   4 +-
 components/camel-ipfs/pom.xml                      |  76 ++++++++
 .../camel-ipfs/src/main/docs/ipfs-component.adoc   |  93 +++++++++
 .../apache/camel/component/ipfs/IPFSComponent.java |  69 +++++++
 .../camel/component/ipfs/IPFSConfiguration.java    |  79 ++++++++
 .../apache/camel/component/ipfs/IPFSEndpoint.java  | 109 +++++++++++
 .../apache/camel/component/ipfs/IPFSProducer.java  |  93 +++++++++
 .../src/main/resources/META-INF/LICENSE.txt        |   0
 .../src/main/resources/META-INF/NOTICE.txt         |   0
 .../services/org/apache/camel/component/ipfs       |  18 ++
 .../camel/component/ipfs/SimpleIPFSTest.java       | 213 +++++++++++++++++++++
 .../src/test/resources/html/chap/ch01.html         |  13 ++
 .../src/test/resources/html/css/default.css        |  38 ++++
 .../src/test/resources/html/etc/userfile.txt       |   1 +
 .../src/test/resources/html/img/logo.png           | Bin 0 -> 6715 bytes
 .../camel-ipfs/src/test/resources/html/index.html  |  13 ++
 .../src/test/resources/log4j2.properties           |  30 +++
 components/pom.xml                                 |   1 +
 components/readme.adoc                             |   5 +-
 docs/user-manual/en/SUMMARY.md                     |   1 +
 parent/pom.xml                                     |  16 ++
 .../ws/springboot/WsComponentConfiguration.java    |   2 +-
 .../components-starter/camel-ipfs-starter/pom.xml  |  68 +++++++
 .../springboot/IPFSComponentAutoConfiguration.java | 128 +++++++++++++
 .../springboot/IPFSComponentConfiguration.java     |  55 ++++++
 .../src/main/resources/META-INF/LICENSE.txt        |   0
 .../src/main/resources/META-INF/NOTICE.txt         |   0
 .../src/main/resources/META-INF/spring.factories   |  19 ++
 .../src/main/resources/META-INF/spring.provides    |  17 ++
 platforms/spring-boot/components-starter/pom.xml   |   1 +
 .../camel-spring-boot-dependencies/pom.xml         |  15 ++
 33 files changed, 1185 insertions(+), 4 deletions(-)
 create mode 100644 components/camel-ipfs/pom.xml
 create mode 100644 components/camel-ipfs/src/main/docs/ipfs-component.adoc
 create mode 100644 components/camel-ipfs/src/main/java/org/apache/camel/component/ipfs/IPFSComponent.java
 create mode 100644 components/camel-ipfs/src/main/java/org/apache/camel/component/ipfs/IPFSConfiguration.java
 create mode 100644 components/camel-ipfs/src/main/java/org/apache/camel/component/ipfs/IPFSEndpoint.java
 create mode 100644 components/camel-ipfs/src/main/java/org/apache/camel/component/ipfs/IPFSProducer.java
 copy {tooling/maven/camel-package-maven-plugin => components/camel-ipfs}/src/main/resources/META-INF/LICENSE.txt (100%)
 copy {tooling/maven/camel-package-maven-plugin => components/camel-ipfs}/src/main/resources/META-INF/NOTICE.txt (100%)
 create mode 100644 components/camel-ipfs/src/main/resources/META-INF/services/org/apache/camel/component/ipfs
 create mode 100644 components/camel-ipfs/src/test/java/org/apache/camel/component/ipfs/SimpleIPFSTest.java
 create mode 100644 components/camel-ipfs/src/test/resources/html/chap/ch01.html
 create mode 100644 components/camel-ipfs/src/test/resources/html/css/default.css
 create mode 100644 components/camel-ipfs/src/test/resources/html/etc/userfile.txt
 create mode 100644 components/camel-ipfs/src/test/resources/html/img/logo.png
 create mode 100644 components/camel-ipfs/src/test/resources/html/index.html
 create mode 100644 components/camel-ipfs/src/test/resources/log4j2.properties
 create mode 100644 platforms/spring-boot/components-starter/camel-ipfs-starter/pom.xml
 create mode 100644 platforms/spring-boot/components-starter/camel-ipfs-starter/src/main/java/org/apache/camel/component/ipfs/springboot/IPFSComponentAutoConfiguration.java
 create mode 100644 platforms/spring-boot/components-starter/camel-ipfs-starter/src/main/java/org/apache/camel/component/ipfs/springboot/IPFSComponentConfiguration.java
 copy {tooling/maven/camel-package-maven-plugin => platforms/spring-boot/components-starter/camel-ipfs-starter}/src/main/resources/META-INF/LICENSE.txt (100%)
 copy {tooling/maven/camel-package-maven-plugin => platforms/spring-boot/components-starter/camel-ipfs-starter}/src/main/resources/META-INF/NOTICE.txt (100%)
 create mode 100644 platforms/spring-boot/components-starter/camel-ipfs-starter/src/main/resources/META-INF/spring.factories
 create mode 100644 platforms/spring-boot/components-starter/camel-ipfs-starter/src/main/resources/META-INF/spring.provides


[camel] 07/08: Camel-ipfs: Fixed the backport to 3.x

Posted by ac...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

acosentino pushed a commit to branch sandbox/camel-3.x
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 4a31f20d09e7eaff891eef0a7019fef131d7a05d
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Tue Dec 4 08:13:53 2018 +0100

    Camel-ipfs: Fixed the backport to 3.x
---
 .../src/main/java/org/apache/camel/component/ipfs/IPFSComponent.java   | 3 ++-
 .../src/main/java/org/apache/camel/component/ipfs/IPFSEndpoint.java    | 3 ++-
 .../src/main/java/org/apache/camel/component/ipfs/IPFSProducer.java    | 3 ++-
 .../component/ipfs/springboot/IPFSComponentAutoConfiguration.java      | 2 +-
 4 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/components/camel-ipfs/src/main/java/org/apache/camel/component/ipfs/IPFSComponent.java b/components/camel-ipfs/src/main/java/org/apache/camel/component/ipfs/IPFSComponent.java
index f6cb6f8..fb645fe 100644
--- a/components/camel-ipfs/src/main/java/org/apache/camel/component/ipfs/IPFSComponent.java
+++ b/components/camel-ipfs/src/main/java/org/apache/camel/component/ipfs/IPFSComponent.java
@@ -23,7 +23,8 @@ import io.nessus.ipfs.IPFSClient;
 import io.nessus.ipfs.impl.DefaultIPFSClient;
 
 import org.apache.camel.Endpoint;
-import org.apache.camel.impl.DefaultComponent;
+import org.apache.camel.support.DefaultComponent;
+
 
 public class IPFSComponent extends DefaultComponent {
 
diff --git a/components/camel-ipfs/src/main/java/org/apache/camel/component/ipfs/IPFSEndpoint.java b/components/camel-ipfs/src/main/java/org/apache/camel/component/ipfs/IPFSEndpoint.java
index 0494151..4a6c64c 100644
--- a/components/camel-ipfs/src/main/java/org/apache/camel/component/ipfs/IPFSEndpoint.java
+++ b/components/camel-ipfs/src/main/java/org/apache/camel/component/ipfs/IPFSEndpoint.java
@@ -29,9 +29,10 @@ import org.apache.camel.Consumer;
 import org.apache.camel.Processor;
 import org.apache.camel.Producer;
 import org.apache.camel.component.ipfs.IPFSConfiguration.IPFSCommand;
-import org.apache.camel.impl.DefaultEndpoint;
+
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
+import org.apache.camel.support.DefaultEndpoint;
 
 /**
  * The camel-ipfs component provides access to the Interplanetary File System
diff --git a/components/camel-ipfs/src/main/java/org/apache/camel/component/ipfs/IPFSProducer.java b/components/camel-ipfs/src/main/java/org/apache/camel/component/ipfs/IPFSProducer.java
index 1554927..11631c2 100644
--- a/components/camel-ipfs/src/main/java/org/apache/camel/component/ipfs/IPFSProducer.java
+++ b/components/camel-ipfs/src/main/java/org/apache/camel/component/ipfs/IPFSProducer.java
@@ -24,7 +24,8 @@ import java.util.List;
 
 import org.apache.camel.Exchange;
 import org.apache.camel.component.ipfs.IPFSConfiguration.IPFSCommand;
-import org.apache.camel.impl.DefaultProducer;
+import org.apache.camel.support.DefaultProducer;
+
 
 public class IPFSProducer extends DefaultProducer {
 
diff --git a/platforms/spring-boot/components-starter/camel-ipfs-starter/src/main/java/org/apache/camel/component/ipfs/springboot/IPFSComponentAutoConfiguration.java b/platforms/spring-boot/components-starter/camel-ipfs-starter/src/main/java/org/apache/camel/component/ipfs/springboot/IPFSComponentAutoConfiguration.java
index 30f92ac..5c543a1 100644
--- a/platforms/spring-boot/components-starter/camel-ipfs-starter/src/main/java/org/apache/camel/component/ipfs/springboot/IPFSComponentAutoConfiguration.java
+++ b/platforms/spring-boot/components-starter/camel-ipfs-starter/src/main/java/org/apache/camel/component/ipfs/springboot/IPFSComponentAutoConfiguration.java
@@ -30,7 +30,7 @@ import org.apache.camel.spring.boot.util.CamelPropertiesHelper;
 import org.apache.camel.spring.boot.util.ConditionalOnCamelContextAndAutoConfigurationBeans;
 import org.apache.camel.spring.boot.util.GroupCondition;
 import org.apache.camel.spring.boot.util.HierarchicalPropertiesEvaluator;
-import org.apache.camel.util.IntrospectionSupport;
+import org.apache.camel.support.IntrospectionSupport;
 import org.apache.camel.util.ObjectHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;


[camel] 02/08: Changed IPFS component to 3.0.0-SNAPSHOT

Posted by ac...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

acosentino pushed a commit to branch sandbox/camel-3.x
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 7623ad08385630fb977d34256fea502013953144
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Mon Dec 3 16:06:32 2018 +0100

    Changed IPFS component to 3.0.0-SNAPSHOT
---
 components/camel-ipfs/pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/components/camel-ipfs/pom.xml b/components/camel-ipfs/pom.xml
index 20b6f7c..3af9ab1 100644
--- a/components/camel-ipfs/pom.xml
+++ b/components/camel-ipfs/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>components</artifactId>
     <groupId>org.apache.camel</groupId>
-    <version>2.23.0-SNAPSHOT</version>
+    <version>3.0.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>camel-ipfs</artifactId>


[camel] 05/08: CAMEL-12810 - Added camel-ipfs to kit

Posted by ac...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

acosentino pushed a commit to branch sandbox/camel-3.x
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 85fca030bdc55857ffc4c3ecc7c80bad111a0dc7
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Thu Nov 15 13:38:17 2018 +0100

    CAMEL-12810 - Added camel-ipfs to kit
---
 apache-camel/src/main/descriptors/common-bin.xml |  1 +
 bom/camel-bom/pom.xml                            | 10 ++++++++++
 parent/pom.xml                                   | 10 ++++++++++
 3 files changed, 21 insertions(+)

diff --git a/apache-camel/src/main/descriptors/common-bin.xml b/apache-camel/src/main/descriptors/common-bin.xml
index c0479cb..c962d8b 100644
--- a/apache-camel/src/main/descriptors/common-bin.xml
+++ b/apache-camel/src/main/descriptors/common-bin.xml
@@ -405,6 +405,7 @@
         <include>org.apache.camel:camel-ignite-starter</include>
         <include>org.apache.camel:camel-infinispan-starter</include>
         <include>org.apache.camel:camel-influxdb-starter</include>
+        <include>org.apache.camel:camel-ipfs-starter</include>
         <include>org.apache.camel:camel-irc-starter</include>
         <include>org.apache.camel:camel-ironmq-starter</include>
         <include>org.apache.camel:camel-jackson-starter</include>
diff --git a/bom/camel-bom/pom.xml b/bom/camel-bom/pom.xml
index aac8f84..6d15154 100644
--- a/bom/camel-bom/pom.xml
+++ b/bom/camel-bom/pom.xml
@@ -1175,6 +1175,16 @@
       </dependency>
       <dependency>
         <groupId>org.apache.camel</groupId>
+        <artifactId>camel-ipfs</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.camel</groupId>
+        <artifactId>camel-ipfs-starter</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.camel</groupId>
         <artifactId>camel-irc</artifactId>
         <version>${project.version}</version>
       </dependency>
diff --git a/parent/pom.xml b/parent/pom.xml
index 7cc055d..704806d 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -1401,6 +1401,11 @@
       </dependency>
       <dependency>
         <groupId>org.apache.camel</groupId>
+        <artifactId>camel-ipfs</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.camel</groupId>
         <artifactId>camel-irc</artifactId>
         <version>${project.version}</version>
       </dependency>
@@ -2885,6 +2890,11 @@
       </dependency>
       <dependency>
         <groupId>org.apache.camel</groupId>
+        <artifactId>camel-ipfs-starter</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.camel</groupId>
         <artifactId>camel-irc-starter</artifactId>
         <version>${project.version}</version>
       </dependency>


[camel] 03/08: CAMEL-12810 - Added explicit repository for Nessus and Spring Boot starter related

Posted by ac...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

acosentino pushed a commit to branch sandbox/camel-3.x
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 149bdc8c86b5f4fe0b9973c910a297499ee4c817
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Thu Nov 15 13:33:46 2018 +0100

    CAMEL-12810 - Added explicit repository for Nessus and Spring Boot starter related
---
 components/camel-ipfs/pom.xml                      |  14 ++
 .../camel-ipfs/src/main/docs/ipfs-component.adoc   |   6 +-
 .../components-starter/camel-ipfs-starter}/pom.xml |  58 +++---
 .../springboot/IPFSComponentAutoConfiguration.java | 128 +++++++++++++
 .../springboot/IPFSComponentConfiguration.java     |  55 ++++++
 .../src/main/resources/META-INF/LICENSE.txt        | 203 +++++++++++++++++++++
 .../src/main/resources/META-INF/NOTICE.txt         |  11 ++
 .../src/main/resources/META-INF/spring.factories   |  19 ++
 .../src/main/resources/META-INF/spring.provides    |  17 ++
 platforms/spring-boot/components-starter/pom.xml   |   1 +
 10 files changed, 482 insertions(+), 30 deletions(-)

diff --git a/components/camel-ipfs/pom.xml b/components/camel-ipfs/pom.xml
index 3af9ab1..94dad67 100644
--- a/components/camel-ipfs/pom.xml
+++ b/components/camel-ipfs/pom.xml
@@ -36,6 +36,20 @@
     <camel.osgi.export.service>org.apache.camel.spi.ComponentResolver;component=ipfs</camel.osgi.export.service>
   </properties>
 
+  <repositories>
+    <repository>
+      <id>jboss.ea</id>
+      <name>JBoss Repository</name>
+      <url>https://repository.jboss.org/nexus/content/groups/ea</url>
+      <snapshots>
+        <enabled>false</enabled>
+      </snapshots>
+      <releases>
+        <enabled>true</enabled>
+      </releases>
+    </repository>
+  </repositories>
+
   <dependencies>
     <dependency>
       <groupId>org.apache.camel</groupId>
diff --git a/components/camel-ipfs/src/main/docs/ipfs-component.adoc b/components/camel-ipfs/src/main/docs/ipfs-component.adoc
index 6a3fcc4..a88cc10 100644
--- a/components/camel-ipfs/src/main/docs/ipfs-component.adoc
+++ b/components/camel-ipfs/src/main/docs/ipfs-component.adoc
@@ -35,20 +35,18 @@ The IPFS component has no options.
 The IPFS endpoint is configured using URI syntax:
 
 ----
-ipfs:cmd
+ipfs:host:port/cmd
 ----
 
 with the following path and query parameters:
 
-==== Path Parameters (3 parameters):
+==== Path Parameters (1 parameters):
 
 
 [width="100%",cols="2,5,^1,2",options="header"]
 |===
 | Name | Description | Default | Type
 | *ipfsCmd* | The ipfs command |  | String
-| *ipfsHost* | The ipfs host |  | String
-| *ipfsPort* | The ipfs port |  | int
 |===
 
 
diff --git a/components/camel-ipfs/pom.xml b/platforms/spring-boot/components-starter/camel-ipfs-starter/pom.xml
similarity index 55%
copy from components/camel-ipfs/pom.xml
copy to platforms/spring-boot/components-starter/camel-ipfs-starter/pom.xml
index 3af9ab1..76694fd 100644
--- a/components/camel-ipfs/pom.xml
+++ b/platforms/spring-boot/components-starter/camel-ipfs-starter/pom.xml
@@ -19,44 +19,50 @@
 -->
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
-
   <parent>
-    <artifactId>components</artifactId>
     <groupId>org.apache.camel</groupId>
-    <version>3.0.0-SNAPSHOT</version>
+    <artifactId>components-starter</artifactId>
+    <version>2.23.0-SNAPSHOT</version>
   </parent>
-
-  <artifactId>camel-ipfs</artifactId>
+  <artifactId>camel-ipfs-starter</artifactId>
   <packaging>jar</packaging>
-  <name>Camel :: IPFS</name>
-  <description>Camel IPFS support</description>
-
-  <properties>
-    <camel.osgi.export.pkg>org.apache.camel.component.ipfs.*</camel.osgi.export.pkg>
-    <camel.osgi.export.service>org.apache.camel.spi.ComponentResolver;component=ipfs</camel.osgi.export.service>
-  </properties>
-
+  <name>Spring-Boot Starter :: Camel :: IPFS</name>
+  <description>Spring-Boot Starter for Camel IPFS support</description>
   <dependencies>
     <dependency>
-      <groupId>org.apache.camel</groupId>
-      <artifactId>camel-core</artifactId>
+      <groupId>org.springframework.boot</groupId>
+      <artifactId>spring-boot-starter</artifactId>
+      <version>${spring-boot-version}</version>
     </dependency>
     <dependency>
-      <groupId>io.nessus</groupId>
-      <artifactId>nessus-ipfs</artifactId>
+      <groupId>org.apache.camel</groupId>
+      <artifactId>camel-ipfs</artifactId>
+      <version>${project.version}</version>
     </dependency>
-
-    <!-- Test -->
+    <!--START OF GENERATED CODE-->
     <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
-      <scope>test</scope>
+      <groupId>org.apache.camel</groupId>
+      <artifactId>camel-core-starter</artifactId>
     </dependency>
     <dependency>
-      <groupId>org.apache.logging.log4j</groupId>
-      <artifactId>log4j-slf4j-impl</artifactId>
-      <scope>test</scope>
+      <groupId>org.apache.camel</groupId>
+      <artifactId>camel-spring-boot-starter</artifactId>
     </dependency>
+    <!--END OF GENERATED CODE-->
   </dependencies>
-
+  <!--START OF GENERATED CODE-->
+  <repositories>
+    <repository>
+      <id>jboss.ea</id>
+      <name>JBoss Repository</name>
+      <url>https://repository.jboss.org/nexus/content/groups/ea</url>
+      <snapshots>
+        <enabled>false</enabled>
+      </snapshots>
+      <releases>
+        <enabled>true</enabled>
+      </releases>
+    </repository>
+  </repositories>
+  <!--END OF GENERATED CODE-->
 </project>
diff --git a/platforms/spring-boot/components-starter/camel-ipfs-starter/src/main/java/org/apache/camel/component/ipfs/springboot/IPFSComponentAutoConfiguration.java b/platforms/spring-boot/components-starter/camel-ipfs-starter/src/main/java/org/apache/camel/component/ipfs/springboot/IPFSComponentAutoConfiguration.java
new file mode 100644
index 0000000..30f92ac
--- /dev/null
+++ b/platforms/spring-boot/components-starter/camel-ipfs-starter/src/main/java/org/apache/camel/component/ipfs/springboot/IPFSComponentAutoConfiguration.java
@@ -0,0 +1,128 @@
+/**
+ * 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.component.ipfs.springboot;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import javax.annotation.Generated;
+import org.apache.camel.CamelContext;
+import org.apache.camel.component.ipfs.IPFSComponent;
+import org.apache.camel.spi.ComponentCustomizer;
+import org.apache.camel.spi.HasId;
+import org.apache.camel.spring.boot.CamelAutoConfiguration;
+import org.apache.camel.spring.boot.ComponentConfigurationProperties;
+import org.apache.camel.spring.boot.util.CamelPropertiesHelper;
+import org.apache.camel.spring.boot.util.ConditionalOnCamelContextAndAutoConfigurationBeans;
+import org.apache.camel.spring.boot.util.GroupCondition;
+import org.apache.camel.spring.boot.util.HierarchicalPropertiesEvaluator;
+import org.apache.camel.util.IntrospectionSupport;
+import org.apache.camel.util.ObjectHelper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.AutoConfigureAfter;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Conditional;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Lazy;
+
+/**
+ * Generated by camel-package-maven-plugin - do not edit this file!
+ */
+@Generated("org.apache.camel.maven.packaging.SpringBootAutoConfigurationMojo")
+@Configuration
+@Conditional({ConditionalOnCamelContextAndAutoConfigurationBeans.class,
+        IPFSComponentAutoConfiguration.GroupConditions.class})
+@AutoConfigureAfter(CamelAutoConfiguration.class)
+@EnableConfigurationProperties({ComponentConfigurationProperties.class,
+        IPFSComponentConfiguration.class})
+public class IPFSComponentAutoConfiguration {
+
+    private static final Logger LOGGER = LoggerFactory
+            .getLogger(IPFSComponentAutoConfiguration.class);
+    @Autowired
+    private ApplicationContext applicationContext;
+    @Autowired
+    private CamelContext camelContext;
+    @Autowired
+    private IPFSComponentConfiguration configuration;
+    @Autowired(required = false)
+    private List<ComponentCustomizer<IPFSComponent>> customizers;
+
+    static class GroupConditions extends GroupCondition {
+        public GroupConditions() {
+            super("camel.component", "camel.component.ipfs");
+        }
+    }
+
+    @Lazy
+    @Bean(name = "ipfs-component")
+    @ConditionalOnMissingBean(IPFSComponent.class)
+    public IPFSComponent configureIPFSComponent() throws Exception {
+        IPFSComponent component = new IPFSComponent();
+        component.setCamelContext(camelContext);
+        Map<String, Object> parameters = new HashMap<>();
+        IntrospectionSupport.getProperties(configuration, parameters, null,
+                false);
+        for (Map.Entry<String, Object> entry : parameters.entrySet()) {
+            Object value = entry.getValue();
+            Class<?> paramClass = value.getClass();
+            if (paramClass.getName().endsWith("NestedConfiguration")) {
+                Class nestedClass = null;
+                try {
+                    nestedClass = (Class) paramClass.getDeclaredField(
+                            "CAMEL_NESTED_CLASS").get(null);
+                    HashMap<String, Object> nestedParameters = new HashMap<>();
+                    IntrospectionSupport.getProperties(value, nestedParameters,
+                            null, false);
+                    Object nestedProperty = nestedClass.newInstance();
+                    CamelPropertiesHelper.setCamelProperties(camelContext,
+                            nestedProperty, nestedParameters, false);
+                    entry.setValue(nestedProperty);
+                } catch (NoSuchFieldException e) {
+                }
+            }
+        }
+        CamelPropertiesHelper.setCamelProperties(camelContext, component,
+                parameters, false);
+        if (ObjectHelper.isNotEmpty(customizers)) {
+            for (ComponentCustomizer<IPFSComponent> customizer : customizers) {
+                boolean useCustomizer = (customizer instanceof HasId)
+                        ? HierarchicalPropertiesEvaluator.evaluate(
+                                applicationContext.getEnvironment(),
+                                "camel.component.customizer",
+                                "camel.component.ipfs.customizer",
+                                ((HasId) customizer).getId())
+                        : HierarchicalPropertiesEvaluator.evaluate(
+                                applicationContext.getEnvironment(),
+                                "camel.component.customizer",
+                                "camel.component.ipfs.customizer");
+                if (useCustomizer) {
+                    LOGGER.debug("Configure component {}, with customizer {}",
+                            component, customizer);
+                    customizer.customize(component);
+                }
+            }
+        }
+        return component;
+    }
+}
\ No newline at end of file
diff --git a/platforms/spring-boot/components-starter/camel-ipfs-starter/src/main/java/org/apache/camel/component/ipfs/springboot/IPFSComponentConfiguration.java b/platforms/spring-boot/components-starter/camel-ipfs-starter/src/main/java/org/apache/camel/component/ipfs/springboot/IPFSComponentConfiguration.java
new file mode 100644
index 0000000..8046aa3
--- /dev/null
+++ b/platforms/spring-boot/components-starter/camel-ipfs-starter/src/main/java/org/apache/camel/component/ipfs/springboot/IPFSComponentConfiguration.java
@@ -0,0 +1,55 @@
+/**
+ * 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.component.ipfs.springboot;
+
+import javax.annotation.Generated;
+import org.apache.camel.spring.boot.ComponentConfigurationPropertiesCommon;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+
+/**
+ * The camel-ipfs component provides access to the Interplanetary File System
+ * (IPFS).
+ * 
+ * Generated by camel-package-maven-plugin - do not edit this file!
+ */
+@Generated("org.apache.camel.maven.packaging.SpringBootAutoConfigurationMojo")
+@ConfigurationProperties(prefix = "camel.component.ipfs")
+public class IPFSComponentConfiguration
+        extends
+            ComponentConfigurationPropertiesCommon {
+
+    /**
+     * Whether to enable auto configuration of the ipfs component. This is
+     * enabled by default.
+     */
+    private Boolean enabled;
+    /**
+     * Whether the component should resolve property placeholders on itself when
+     * starting. Only properties which are of String type can use property
+     * placeholders.
+     */
+    private Boolean resolvePropertyPlaceholders = true;
+
+    public Boolean getResolvePropertyPlaceholders() {
+        return resolvePropertyPlaceholders;
+    }
+
+    public void setResolvePropertyPlaceholders(
+            Boolean resolvePropertyPlaceholders) {
+        this.resolvePropertyPlaceholders = resolvePropertyPlaceholders;
+    }
+}
\ No newline at end of file
diff --git a/platforms/spring-boot/components-starter/camel-ipfs-starter/src/main/resources/META-INF/LICENSE.txt b/platforms/spring-boot/components-starter/camel-ipfs-starter/src/main/resources/META-INF/LICENSE.txt
new file mode 100644
index 0000000..6b0b127
--- /dev/null
+++ b/platforms/spring-boot/components-starter/camel-ipfs-starter/src/main/resources/META-INF/LICENSE.txt
@@ -0,0 +1,203 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
+
diff --git a/platforms/spring-boot/components-starter/camel-ipfs-starter/src/main/resources/META-INF/NOTICE.txt b/platforms/spring-boot/components-starter/camel-ipfs-starter/src/main/resources/META-INF/NOTICE.txt
new file mode 100644
index 0000000..2e215bf
--- /dev/null
+++ b/platforms/spring-boot/components-starter/camel-ipfs-starter/src/main/resources/META-INF/NOTICE.txt
@@ -0,0 +1,11 @@
+   =========================================================================
+   ==  NOTICE file corresponding to the section 4 d of                    ==
+   ==  the Apache License, Version 2.0,                                   ==
+   ==  in this case for the Apache Camel distribution.                    ==
+   =========================================================================
+
+   This product includes software developed by
+   The Apache Software Foundation (http://www.apache.org/).
+
+   Please read the different LICENSE files present in the licenses directory of
+   this distribution.
diff --git a/platforms/spring-boot/components-starter/camel-ipfs-starter/src/main/resources/META-INF/spring.factories b/platforms/spring-boot/components-starter/camel-ipfs-starter/src/main/resources/META-INF/spring.factories
new file mode 100644
index 0000000..d839f97
--- /dev/null
+++ b/platforms/spring-boot/components-starter/camel-ipfs-starter/src/main/resources/META-INF/spring.factories
@@ -0,0 +1,19 @@
+## ---------------------------------------------------------------------------
+## 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.
+## ---------------------------------------------------------------------------
+
+org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
+org.apache.camel.component.ipfs.springboot.IPFSComponentAutoConfiguration
diff --git a/platforms/spring-boot/components-starter/camel-ipfs-starter/src/main/resources/META-INF/spring.provides b/platforms/spring-boot/components-starter/camel-ipfs-starter/src/main/resources/META-INF/spring.provides
new file mode 100644
index 0000000..19172a6
--- /dev/null
+++ b/platforms/spring-boot/components-starter/camel-ipfs-starter/src/main/resources/META-INF/spring.provides
@@ -0,0 +1,17 @@
+## ---------------------------------------------------------------------------
+## 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.
+## ---------------------------------------------------------------------------
+provides: camel-ipfs
diff --git a/platforms/spring-boot/components-starter/pom.xml b/platforms/spring-boot/components-starter/pom.xml
index 4329011..f9a1a82 100644
--- a/platforms/spring-boot/components-starter/pom.xml
+++ b/platforms/spring-boot/components-starter/pom.xml
@@ -192,6 +192,7 @@
     <module>camel-ignite-starter</module>
     <module>camel-infinispan-starter</module>
     <module>camel-influxdb-starter</module>
+    <module>camel-ipfs-starter</module>
     <module>camel-irc-starter</module>
     <module>camel-ironmq-starter</module>
     <module>camel-jackson-starter</module>


[camel] 01/08: [IPFS] Add initial support for IPFS

Posted by ac...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

acosentino pushed a commit to branch sandbox/camel-3.x
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 3d2d2630cf6d3c5b8a12b28f8ec1108a41305097
Author: Thomas Diesler <td...@redhat.com>
AuthorDate: Fri Sep 14 14:21:21 2018 +0200

    [IPFS] Add initial support for IPFS
    
    CAMEL-12810
---
 apache-camel/src/main/descriptors/common-bin.xml   |   1 +
 components/camel-ipfs/pom.xml                      |  62 ++++++
 .../camel-ipfs/src/main/docs/ipfs-component.adoc   |  93 +++++++++
 .../apache/camel/component/ipfs/IPFSComponent.java |  64 ++++++
 .../camel/component/ipfs/IPFSConfiguration.java    |  79 ++++++++
 .../apache/camel/component/ipfs/IPFSEndpoint.java  | 107 ++++++++++
 .../apache/camel/component/ipfs/IPFSProducer.java  |  87 +++++++++
 .../src/main/resources/META-INF/LICENSE.txt        | 203 +++++++++++++++++++
 .../src/main/resources/META-INF/NOTICE.txt         |  11 ++
 .../services/org/apache/camel/component/ipfs       |  18 ++
 .../camel/component/ipfs/SimpleIPFSTest.java       | 217 +++++++++++++++++++++
 .../src/test/resources/html/chap/ch01.html         |  13 ++
 .../src/test/resources/html/css/default.css        |  38 ++++
 .../src/test/resources/html/etc/userfile.txt       |   1 +
 .../src/test/resources/html/img/logo.png           | Bin 0 -> 6715 bytes
 .../camel-ipfs/src/test/resources/html/index.html  |  13 ++
 .../src/test/resources/log4j2.properties           |  30 +++
 components/pom.xml                                 |   1 +
 parent/pom.xml                                     |   6 +
 19 files changed, 1044 insertions(+)

diff --git a/apache-camel/src/main/descriptors/common-bin.xml b/apache-camel/src/main/descriptors/common-bin.xml
index 2e18886..c0479cb 100644
--- a/apache-camel/src/main/descriptors/common-bin.xml
+++ b/apache-camel/src/main/descriptors/common-bin.xml
@@ -120,6 +120,7 @@
         <include>org.apache.camel:camel-infinispan</include>
         <include>org.apache.camel:camel-influxdb</include>
         <include>org.apache.camel:camel-ignite</include>
+        <include>org.apache.camel:camel-ipfs</include>
         <include>org.apache.camel:camel-irc</include>
         <include>org.apache.camel:camel-ironmq</include>
         <include>org.apache.camel:camel-jackson</include>
diff --git a/components/camel-ipfs/pom.xml b/components/camel-ipfs/pom.xml
new file mode 100644
index 0000000..20b6f7c
--- /dev/null
+++ b/components/camel-ipfs/pom.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    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.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <artifactId>components</artifactId>
+    <groupId>org.apache.camel</groupId>
+    <version>2.23.0-SNAPSHOT</version>
+  </parent>
+
+  <artifactId>camel-ipfs</artifactId>
+  <packaging>jar</packaging>
+  <name>Camel :: IPFS</name>
+  <description>Camel IPFS support</description>
+
+  <properties>
+    <camel.osgi.export.pkg>org.apache.camel.component.ipfs.*</camel.osgi.export.pkg>
+    <camel.osgi.export.service>org.apache.camel.spi.ComponentResolver;component=ipfs</camel.osgi.export.service>
+  </properties>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.camel</groupId>
+      <artifactId>camel-core</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>io.nessus</groupId>
+      <artifactId>nessus-ipfs</artifactId>
+    </dependency>
+
+    <!-- Test -->
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.logging.log4j</groupId>
+      <artifactId>log4j-slf4j-impl</artifactId>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+
+</project>
diff --git a/components/camel-ipfs/src/main/docs/ipfs-component.adoc b/components/camel-ipfs/src/main/docs/ipfs-component.adoc
new file mode 100644
index 0000000..6a3fcc4
--- /dev/null
+++ b/components/camel-ipfs/src/main/docs/ipfs-component.adoc
@@ -0,0 +1,93 @@
+[[ipfs-component]]
+== IPFS Component
+
+*Available as of Camel version 2.23*
+
+The *ipfs:* component provides access to the Interplanetary File System https://ipfs.io/[(IPFS)].
+
+Maven users will need to add the following dependency to their `pom.xml`
+for this component:
+
+[source,xml]
+------------------------------------------------------------
+<dependency>
+    <groupId>org.apache.camel</groupId>
+    <artifactId>camel-ipfs</artifactId>
+    <version>x.x.x</version>
+    <!-- use the same version as your Camel core version -->
+</dependency>
+------------------------------------------------------------
+
+### URI format
+
+[source,java]
+---------------------------------
+ipfs://cmd?options
+---------------------------------
+
+### Options
+
+// component options: START
+The IPFS component has no options.
+// component options: END
+
+// endpoint options: START
+The IPFS endpoint is configured using URI syntax:
+
+----
+ipfs:cmd
+----
+
+with the following path and query parameters:
+
+==== Path Parameters (3 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *ipfsCmd* | The ipfs command |  | String
+| *ipfsHost* | The ipfs host |  | String
+| *ipfsPort* | The ipfs port |  | int
+|===
+
+
+==== Query Parameters (2 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *outdir* (producer) | The ipfs output directory |  | Path
+| *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
+|===
+// endpoint options: END
+// spring-boot-auto-configure options: START
+=== Spring Boot Auto-Configuration
+
+
+The component supports 2 options, which are listed below.
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *camel.component.ipfs.enabled* | Whether to enable auto configuration of the ipfs component. This is enabled by default. |  | Boolean
+| *camel.component.ipfs.resolve-property-placeholders* | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | Boolean
+|===
+// spring-boot-auto-configure options: END
+
+
+### Message Headers
+
+[TODO]
+
+### Samples
+
+In this sample we add a file to IPFS, get a file from IPFS and finally access the content of an IPFS file. 
+
+[source,java]
+---------------------------------------------------------------------------------------------
+from("direct:start").to("ipfs:add")
+from("direct:start").to("ipfs:get?outdir=target")
+from("direct:start").to("ipfs:cat");
+---------------------------------------------------------------------------------------------
diff --git a/components/camel-ipfs/src/main/java/org/apache/camel/component/ipfs/IPFSComponent.java b/components/camel-ipfs/src/main/java/org/apache/camel/component/ipfs/IPFSComponent.java
new file mode 100644
index 0000000..9d5b228
--- /dev/null
+++ b/components/camel-ipfs/src/main/java/org/apache/camel/component/ipfs/IPFSComponent.java
@@ -0,0 +1,64 @@
+/**
+ * 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.component.ipfs;
+
+import java.net.URI;
+import java.util.Map;
+
+import org.apache.camel.Endpoint;
+import org.apache.camel.impl.DefaultComponent;
+
+import io.nessus.ipfs.IPFSClient;
+import io.nessus.ipfs.impl.DefaultIPFSClient;
+
+public class IPFSComponent extends DefaultComponent {
+
+    private IPFSClient client;
+    
+    @Override
+    protected Endpoint createEndpoint(String urispec, String remaining, Map<String, Object> params) throws Exception {
+
+        // Init the configuration
+        IPFSConfiguration config = new IPFSConfiguration(this);
+        setProperties(config, params);
+
+        // Derive host:port and cmd from the give uri
+        URI uri = new URI(urispec);
+        String host = uri.getHost();
+        int port = uri.getPort();
+        String cmd = remaining;
+        if (!cmd.equals(host)) {
+            if (host != null) config.setIpfsHost(host);
+            if (port > 0) config.setIpfsPort(port);
+            int idx = cmd.indexOf('/');
+            cmd = cmd.substring(idx + 1);
+        }
+        config.setIpfsCmd(cmd);
+        
+        client = createClient(config);
+        
+        return new IPFSEndpoint(urispec, this, config);
+    }
+
+    public IPFSClient getIPFSClient() {
+        return client;
+    }
+
+    private synchronized IPFSClient createClient(IPFSConfiguration config) {
+        return new DefaultIPFSClient(config.getIpfsHost(), config.getIpfsPort());
+    }
+}
\ No newline at end of file
diff --git a/components/camel-ipfs/src/main/java/org/apache/camel/component/ipfs/IPFSConfiguration.java b/components/camel-ipfs/src/main/java/org/apache/camel/component/ipfs/IPFSConfiguration.java
new file mode 100644
index 0000000..5a78d64
--- /dev/null
+++ b/components/camel-ipfs/src/main/java/org/apache/camel/component/ipfs/IPFSConfiguration.java
@@ -0,0 +1,79 @@
+/**
+ * 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.component.ipfs;
+
+
+import java.nio.file.Path;
+import java.nio.file.Paths;
+
+import org.apache.camel.spi.UriParam;
+import org.apache.camel.spi.UriParams;
+import org.apache.camel.spi.UriPath;
+import org.apache.camel.util.ObjectHelper;
+
+@UriParams
+public class IPFSConfiguration {
+
+    // Available commands
+    public enum IPFSCommand {
+        add, cat, get, version 
+    }
+    
+    @UriPath(description = "The ipfs command")
+    private String ipfsCmd;
+    @UriParam(description = "The ipfs output directory")
+    private Path outdir;
+
+    private String ipfsHost = "127.0.0.1";
+    private int ipfsPort = 5001;
+    
+    public IPFSConfiguration(IPFSComponent component) {
+        ObjectHelper.notNull(component, "component");
+    }
+
+    public String getIpfsCmd() {
+        return ipfsCmd;
+    }
+
+    public void setIpfsCmd(String cmd) {
+        this.ipfsCmd = cmd;
+    }
+
+    public String getIpfsHost() {
+        return ipfsHost;
+    }
+
+    public void setIpfsHost(String ipfsHost) {
+        this.ipfsHost = ipfsHost;
+    }
+
+    public int getIpfsPort() {
+        return ipfsPort;
+    }
+
+    public void setIpfsPort(int ipfsPort) {
+        this.ipfsPort = ipfsPort;
+    }
+
+    public Path getOutdir() {
+        return outdir;
+    }
+
+    public void setOutdir(String outdir) {
+        this.outdir = Paths.get(outdir);
+    }
+}
diff --git a/components/camel-ipfs/src/main/java/org/apache/camel/component/ipfs/IPFSEndpoint.java b/components/camel-ipfs/src/main/java/org/apache/camel/component/ipfs/IPFSEndpoint.java
new file mode 100644
index 0000000..6709332
--- /dev/null
+++ b/components/camel-ipfs/src/main/java/org/apache/camel/component/ipfs/IPFSEndpoint.java
@@ -0,0 +1,107 @@
+/**
+ * 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.component.ipfs;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.nio.file.Path;
+import java.util.List;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.Future;
+
+import org.apache.camel.Consumer;
+import org.apache.camel.Processor;
+import org.apache.camel.Producer;
+import org.apache.camel.component.ipfs.IPFSConfiguration.IPFSCommand;
+import org.apache.camel.impl.DefaultEndpoint;
+import org.apache.camel.spi.UriEndpoint;
+import org.apache.camel.spi.UriParam;
+
+import io.nessus.ipfs.IPFSClient;
+
+/**
+ * The camel-ipfs component provides access to the Interplanetary File System (IPFS).
+ */
+@UriEndpoint(firstVersion = "2.23.0", scheme = "ipfs", title = "IPFS", syntax = "ipfs:host:port/cmd", producerOnly = true, label = "file,ipfs")
+public class IPFSEndpoint extends DefaultEndpoint {
+
+    @UriParam
+    private final IPFSConfiguration configuration;
+    
+    public IPFSEndpoint(String uri, IPFSComponent component, IPFSConfiguration configuration) {
+        super(uri, component);
+        this.configuration = configuration;
+    }
+
+    @Override
+    public IPFSComponent getComponent() {
+        return (IPFSComponent) super.getComponent();
+    }
+
+    @Override
+    public Consumer createConsumer(Processor processor) throws Exception {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public Producer createProducer() throws Exception {
+        return new IPFSProducer(this);
+    }
+
+    @Override
+    public boolean isSingleton() {
+        return false;
+    }
+
+    IPFSConfiguration getConfiguration() {
+        return configuration;
+    }
+
+    IPFSCommand getCommand() {
+        String cmd = configuration.getIpfsCmd();
+        try {
+            return IPFSCommand.valueOf(cmd);
+        } catch (IllegalArgumentException ex) {
+            throw new IllegalArgumentException("Unsupported command: " + cmd);
+        }
+    }
+    
+    String ipfsVersion() throws IOException {
+        return ipfs().version();
+    }
+
+    List<String> ipfsAdd(Path path) throws IOException {
+        return ipfs().add(path);
+    }
+
+    InputStream ipfsCat(String cid) throws IOException {
+        return ipfs().cat(cid);
+    }
+
+    Path ipfsGet(String cid, Path outdir) throws IOException {
+        Future<Path> future = ipfs().get(cid, outdir);
+        try {
+            return future.get();
+        } catch (InterruptedException | ExecutionException ex) {
+            throw new IOException("Cannot obtain: " + cid, ex);
+        }
+    }
+
+    private IPFSClient ipfs() {
+        return getComponent().getIPFSClient();
+    }
+}
diff --git a/components/camel-ipfs/src/main/java/org/apache/camel/component/ipfs/IPFSProducer.java b/components/camel-ipfs/src/main/java/org/apache/camel/component/ipfs/IPFSProducer.java
new file mode 100644
index 0000000..0f6e533
--- /dev/null
+++ b/components/camel-ipfs/src/main/java/org/apache/camel/component/ipfs/IPFSProducer.java
@@ -0,0 +1,87 @@
+/**
+ * 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.component.ipfs;
+
+import java.io.File;
+import java.io.InputStream;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.List;
+
+import org.apache.camel.Exchange;
+import org.apache.camel.impl.DefaultProducer;
+
+import org.apache.camel.component.ipfs.IPFSConfiguration.IPFSCommand;
+
+public class IPFSProducer extends DefaultProducer {
+    
+    public IPFSProducer(IPFSEndpoint endpoint) {
+        super(endpoint);
+    }
+
+    @Override
+    public IPFSEndpoint getEndpoint() {
+        return (IPFSEndpoint) super.getEndpoint();
+    }
+
+    @Override
+    public void process(Exchange exchange) throws Exception {
+
+        IPFSEndpoint endpoint = getEndpoint();
+        IPFSCommand cmd = endpoint.getCommand();
+        
+        if (IPFSCommand.version == cmd) {
+            
+            String resp = endpoint.ipfsVersion();
+            exchange.getMessage().setBody(resp);
+            
+        }  else if (IPFSCommand.add == cmd) {
+            
+            Path path = pathFromBody(exchange);
+            List<String> cids = endpoint.ipfsAdd(path);
+            Object resp = cids;
+            if (path.toFile().isFile()) {
+                resp = cids.size() > 0 ? cids.get(0) : null;
+            }
+            exchange.getMessage().setBody(resp);
+            
+        }  else if (IPFSCommand.cat == cmd) {
+
+            String cid = exchange.getMessage().getBody(String.class);
+            InputStream resp = endpoint.ipfsCat(cid);
+            exchange.getMessage().setBody(resp);
+            
+        }  else if (IPFSCommand.get == cmd) {
+
+            Path outdir = endpoint.getConfiguration().getOutdir();
+            String cid = exchange.getMessage().getBody(String.class);
+            Path resp = endpoint.ipfsGet(cid, outdir);
+            exchange.getMessage().setBody(resp);
+            
+        } else {
+            throw new UnsupportedOperationException(cmd.toString());
+        }
+    }
+
+    private Path pathFromBody(Exchange exchange) {
+        Object body = exchange.getMessage().getBody();
+        if (body instanceof Path) return (Path) body;
+        if (body instanceof String) return Paths.get((String) body);
+        if (body instanceof File) return ((File) body).toPath();
+        throw new IllegalArgumentException("Invalid path: " + body);
+    }
+}
diff --git a/components/camel-ipfs/src/main/resources/META-INF/LICENSE.txt b/components/camel-ipfs/src/main/resources/META-INF/LICENSE.txt
new file mode 100644
index 0000000..6b0b127
--- /dev/null
+++ b/components/camel-ipfs/src/main/resources/META-INF/LICENSE.txt
@@ -0,0 +1,203 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
+
diff --git a/components/camel-ipfs/src/main/resources/META-INF/NOTICE.txt b/components/camel-ipfs/src/main/resources/META-INF/NOTICE.txt
new file mode 100644
index 0000000..2e215bf
--- /dev/null
+++ b/components/camel-ipfs/src/main/resources/META-INF/NOTICE.txt
@@ -0,0 +1,11 @@
+   =========================================================================
+   ==  NOTICE file corresponding to the section 4 d of                    ==
+   ==  the Apache License, Version 2.0,                                   ==
+   ==  in this case for the Apache Camel distribution.                    ==
+   =========================================================================
+
+   This product includes software developed by
+   The Apache Software Foundation (http://www.apache.org/).
+
+   Please read the different LICENSE files present in the licenses directory of
+   this distribution.
diff --git a/components/camel-ipfs/src/main/resources/META-INF/services/org/apache/camel/component/ipfs b/components/camel-ipfs/src/main/resources/META-INF/services/org/apache/camel/component/ipfs
new file mode 100644
index 0000000..179ce43
--- /dev/null
+++ b/components/camel-ipfs/src/main/resources/META-INF/services/org/apache/camel/component/ipfs
@@ -0,0 +1,18 @@
+#
+# 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.
+#
+
+class=org.apache.camel.component.ipfs.IPFSComponent
diff --git a/components/camel-ipfs/src/test/java/org/apache/camel/component/ipfs/SimpleIPFSTest.java b/components/camel-ipfs/src/test/java/org/apache/camel/component/ipfs/SimpleIPFSTest.java
new file mode 100644
index 0000000..589b919
--- /dev/null
+++ b/components/camel-ipfs/src/test/java/org/apache/camel/component/ipfs/SimpleIPFSTest.java
@@ -0,0 +1,217 @@
+/*
+ * #%L
+ * Wildfly Camel :: Testsuite
+ * %%
+ * Copyright (C) 2013 - 2014 RedHat
+ * %%
+ * 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.
+ * #L%
+ */
+
+package org.apache.camel.component.ipfs;
+
+import java.io.ByteArrayOutputStream;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.Arrays;
+import java.util.List;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.ProducerTemplate;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.impl.DefaultCamelContext;
+import org.junit.Assert;
+import org.junit.Assume;
+import org.junit.Test;
+
+import io.nessus.utils.StreamUtils;
+
+public class SimpleIPFSTest {
+
+    @Test
+    public void ipfsVersion() throws Exception {
+
+        CamelContext camelctx = new DefaultCamelContext();
+        camelctx.addRoutes(new RouteBuilder() {
+            @Override
+            public void configure() throws Exception {
+                from("direct:startA").to("ipfs:version");
+                from("direct:startB").to("ipfs:127.0.0.1/version");
+                from("direct:startC").to("ipfs:127.0.0.1:5001/version");
+            }
+        });
+
+        camelctx.start();
+        assumeIPFS(camelctx);
+        
+        try {
+            ProducerTemplate producer = camelctx.createProducerTemplate();
+            String resA = producer.requestBody("direct:startA", null, String.class);
+            String resB = producer.requestBody("direct:startB", null, String.class);
+            String resC = producer.requestBody("direct:startC", null, String.class);
+            Arrays.asList(resA, resB, resC).forEach(res -> {
+                Assert.assertTrue("Expecting 0.4 in: " + resA, resA.startsWith("0.4"));
+            });
+        } finally {
+            camelctx.stop();
+        }
+    }
+
+    @Test
+    public void ipfsAddSingle() throws Exception {
+
+        String HASH = "QmYgjSRbXFPdPYKqQSnUjmXLYLudVahEJQotMaAJKt6Lbd";
+        
+        CamelContext camelctx = new DefaultCamelContext();
+        camelctx.addRoutes(new RouteBuilder() {
+            @Override
+            public void configure() throws Exception {
+                from("direct:start").to("ipfs:add");
+            }
+        });
+
+        Path path = Paths.get("src/test/resources/html/index.html");
+        
+        camelctx.start();
+        assumeIPFS(camelctx);
+        
+        try {
+            ProducerTemplate producer = camelctx.createProducerTemplate();
+            String res = producer.requestBody("direct:start", path, String.class);
+            Assert.assertEquals(HASH, res);
+        } finally {
+            camelctx.stop();
+        }
+    }
+
+    @Test
+    @SuppressWarnings("unchecked")
+    public void ipfsAddRecursive() throws Exception {
+
+        String HASH = "Qme6hd6tYXTFb7bb7L3JZ5U6ygktpAHKxbaeffYyQN85mW";
+        
+        CamelContext camelctx = new DefaultCamelContext();
+        camelctx.addRoutes(new RouteBuilder() {
+            @Override
+            public void configure() throws Exception {
+                from("direct:start").to("ipfs:add");
+            }
+        });
+
+        Path path = Paths.get("src/test/resources/html");
+        
+        camelctx.start();
+        assumeIPFS(camelctx);
+        
+        try {
+            ProducerTemplate producer = camelctx.createProducerTemplate();
+            List<String> res = producer.requestBody("direct:start", path, List.class);
+            Assert.assertEquals(10, res.size());
+            Assert.assertEquals(HASH, res.get(9));
+        } finally {
+            camelctx.stop();
+        }
+    }
+
+    @Test
+    public void ipfsCat() throws Exception {
+
+        String HASH = "QmUD7uG5prAMHbcCfp4x1G1mMSpywcSMHTGpq62sbpDAg6";
+        
+        CamelContext camelctx = new DefaultCamelContext();
+        camelctx.addRoutes(new RouteBuilder() {
+            @Override
+            public void configure() throws Exception {
+                from("direct:start").to("ipfs:cat");
+            }
+        });
+
+        camelctx.start();
+        assumeIPFS(camelctx);
+        
+        try {
+            ProducerTemplate producer = camelctx.createProducerTemplate();
+            InputStream res = producer.requestBody("direct:start", HASH, InputStream.class);
+            verifyFileContent(res);
+        } finally {
+            camelctx.stop();
+        }
+    }
+
+    @Test
+    public void ipfsGetSingle() throws Exception {
+
+        String HASH = "QmUD7uG5prAMHbcCfp4x1G1mMSpywcSMHTGpq62sbpDAg6";
+        
+        CamelContext camelctx = new DefaultCamelContext();
+        camelctx.addRoutes(new RouteBuilder() {
+            @Override
+            public void configure() throws Exception {
+                from("direct:start").to("ipfs:get?outdir=target");
+            }
+        });
+
+        camelctx.start();
+        assumeIPFS(camelctx);
+        
+        try {
+            ProducerTemplate producer = camelctx.createProducerTemplate();
+            Path res = producer.requestBody("direct:start", HASH, Path.class);
+            Assert.assertEquals(Paths.get("target", HASH), res);
+            verifyFileContent(new FileInputStream(res.toFile()));
+        } finally {
+            camelctx.stop();
+        }
+    }
+
+    @Test
+    public void ipfsGetRecursive() throws Exception {
+
+        String HASH = "Qme6hd6tYXTFb7bb7L3JZ5U6ygktpAHKxbaeffYyQN85mW";
+        
+        CamelContext camelctx = new DefaultCamelContext();
+        camelctx.addRoutes(new RouteBuilder() {
+            @Override
+            public void configure() throws Exception {
+                from("direct:start").to("ipfs:get?outdir=target");
+            }
+        });
+
+        camelctx.start();
+        assumeIPFS(camelctx);
+        
+        try {
+            ProducerTemplate producer = camelctx.createProducerTemplate();
+            Path res = producer.requestBody("direct:start", HASH, Path.class);
+            Assert.assertEquals(Paths.get("target", HASH), res);
+            Assert.assertTrue(res.toFile().isDirectory());
+            Assert.assertTrue(res.resolve("index.html").toFile().exists());
+        } finally {
+            camelctx.stop();
+        }
+    }
+
+    private void verifyFileContent(InputStream ins) throws IOException {
+        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        StreamUtils.copyStream(ins, baos);
+        Assert.assertEquals("The quick brown fox jumps over the lazy dog.", new String (baos.toByteArray()));
+    }
+
+    private void assumeIPFS(CamelContext camelctx) {
+        IPFSComponent comp = camelctx.getComponent("ipfs", IPFSComponent.class);
+        Assume.assumeTrue(comp.getIPFSClient().hasConnection());
+    }
+}
\ No newline at end of file
diff --git a/components/camel-ipfs/src/test/resources/html/chap/ch01.html b/components/camel-ipfs/src/test/resources/html/chap/ch01.html
new file mode 100644
index 0000000..4edc3fd
--- /dev/null
+++ b/components/camel-ipfs/src/test/resources/html/chap/ch01.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <title>IPFS</title>
+    <meta charset="utf-8" />
+    <link rel="stylesheet" href="./../css/default.css">
+</head>
+<body>
+<p><a href="../index.html">Home</a></p>
+<h2>Chapter 01</h2>
+<p><img src="../img/logo.png" alt="logo" /></p>
+</body>
+</html>
diff --git a/components/camel-ipfs/src/test/resources/html/css/default.css b/components/camel-ipfs/src/test/resources/html/css/default.css
new file mode 100644
index 0000000..8c0b2d5
--- /dev/null
+++ b/components/camel-ipfs/src/test/resources/html/css/default.css
@@ -0,0 +1,38 @@
+body {
+    font-family: "Verdana";
+    color: #137cb9
+}
+
+a {
+    #text-decoration: none;
+    color: #137cb9
+}
+
+a.gray {
+    color: gray;
+}
+
+h1 {
+	font-weight: normal;
+    font-size: 20px;
+}
+
+h2 {
+    font-weight: normal;
+	font-size: 15px;
+}
+
+th {
+	text-align: left;
+    font-weight: normal;
+    font-size: 14px;
+    color: gray;
+}
+
+td.gray {
+    color: gray;
+}
+tr.gray {
+    color: gray;
+}
+
diff --git a/components/camel-ipfs/src/test/resources/html/etc/userfile.txt b/components/camel-ipfs/src/test/resources/html/etc/userfile.txt
new file mode 100644
index 0000000..8fe2a4b
--- /dev/null
+++ b/components/camel-ipfs/src/test/resources/html/etc/userfile.txt
@@ -0,0 +1 @@
+The quick brown fox jumps over the lazy dog.
\ No newline at end of file
diff --git a/components/camel-ipfs/src/test/resources/html/img/logo.png b/components/camel-ipfs/src/test/resources/html/img/logo.png
new file mode 100644
index 0000000..ddda52e
Binary files /dev/null and b/components/camel-ipfs/src/test/resources/html/img/logo.png differ
diff --git a/components/camel-ipfs/src/test/resources/html/index.html b/components/camel-ipfs/src/test/resources/html/index.html
new file mode 100644
index 0000000..3781300
--- /dev/null
+++ b/components/camel-ipfs/src/test/resources/html/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <title>IPFS</title>
+    <meta charset="utf-8" />
+    <link rel="stylesheet" href="./css/default.css">
+</head>
+<body>
+<p><a href="index.html">Home</a></p>
+<p><a href="chap/ch01.html">chapter one</a></p>
+<p><img src="img/logo.png" alt="logo" /></p>
+</body>
+</html>
diff --git a/components/camel-ipfs/src/test/resources/log4j2.properties b/components/camel-ipfs/src/test/resources/log4j2.properties
new file mode 100644
index 0000000..081914f
--- /dev/null
+++ b/components/camel-ipfs/src/test/resources/log4j2.properties
@@ -0,0 +1,30 @@
+## ---------------------------------------------------------------------------
+## 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.
+## ---------------------------------------------------------------------------
+
+rootLogger.level = DEBUG
+rootLogger.appenderRef.file.ref = file
+
+appender.file.name = file
+appender.file.type = File
+appender.file.fileName = target/camel-test.log
+appender.file.layout.type = PatternLayout
+appender.file.layout.pattern = %d [%-15.15t] %-5p %-30.30c{1} - %m%n
+
+appender.out.name = out
+appender.out.type = Console
+appender.out.layout.type = PatternLayout
+appender.out.layout.pattern = %d [%-15.15t] %-5p %-30.30c{1} - %m%n
diff --git a/components/pom.xml b/components/pom.xml
index a2917dc..cda568c 100644
--- a/components/pom.xml
+++ b/components/pom.xml
@@ -50,6 +50,7 @@
     <module>camel-http-common</module>
     <module>camel-http4</module>
     <module>camel-hystrix</module>
+    <module>camel-ipfs</module>
     <module>camel-jetty-common</module>
     <module>camel-jetty</module>
     <module>camel-jetty9</module>
diff --git a/parent/pom.xml b/parent/pom.xml
index 9e2590c..7cc055d 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -513,6 +513,7 @@
     <mvel-version>2.4.2.Final</mvel-version>
     <mybatis-version>3.4.6</mybatis-version>
     <narayana-version>5.9.0.Final</narayana-version>
+    <nessus-version>1.0.0.Beta1</nessus-version>
     <nsq-client-version>1.0.0.RC4</nsq-client-version>
     <neethi-bundle-version>3.0.1</neethi-bundle-version>
     <nekohtml-version>1.9.22</nekohtml-version>
@@ -4886,6 +4887,11 @@
         <version>${pdfbox-version}</version>
       </dependency>
 
+      <dependency>
+        <groupId>io.nessus</groupId>
+        <artifactId>nessus-ipfs</artifactId>
+        <version>${nessus-version}</version>
+      </dependency>
     </dependencies>
   </dependencyManagement>
 


[camel] 04/08: Changed ipfs component starter to 3.0.0-SNAPSHOT

Posted by ac...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

acosentino pushed a commit to branch sandbox/camel-3.x
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 191403d372cae96ff8cdd207d41c29b06f873ad1
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Mon Dec 3 16:07:51 2018 +0100

    Changed ipfs component starter to 3.0.0-SNAPSHOT
---
 platforms/spring-boot/components-starter/camel-ipfs-starter/pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/platforms/spring-boot/components-starter/camel-ipfs-starter/pom.xml b/platforms/spring-boot/components-starter/camel-ipfs-starter/pom.xml
index 76694fd..f48a4cc 100644
--- a/platforms/spring-boot/components-starter/camel-ipfs-starter/pom.xml
+++ b/platforms/spring-boot/components-starter/camel-ipfs-starter/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel</groupId>
     <artifactId>components-starter</artifactId>
-    <version>2.23.0-SNAPSHOT</version>
+    <version>3.0.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-ipfs-starter</artifactId>
   <packaging>jar</packaging>


[camel] 08/08: Regen

Posted by ac...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

acosentino pushed a commit to branch sandbox/camel-3.x
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 32919f08b8c490c23a544d6ed1bb377af29cf41f
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Tue Dec 4 08:51:58 2018 +0100

    Regen
---
 .../camel-ahc-ws/src/main/docs/ahc-ws-component.adoc      |  4 ++--
 components/camel-ipfs/src/main/docs/ipfs-component.adoc   |  2 ++
 components/readme.adoc                                    |  5 ++++-
 docs/user-manual/en/SUMMARY.md                            |  1 +
 .../ahc/ws/springboot/WsComponentConfiguration.java       |  2 +-
 .../spring-boot-dm/camel-spring-boot-dependencies/pom.xml | 15 +++++++++++++++
 6 files changed, 25 insertions(+), 4 deletions(-)

diff --git a/components/camel-ahc-ws/src/main/docs/ahc-ws-component.adoc b/components/camel-ahc-ws/src/main/docs/ahc-ws-component.adoc
index e9829c5..13d290a 100644
--- a/components/camel-ahc-ws/src/main/docs/ahc-ws-component.adoc
+++ b/components/camel-ahc-ws/src/main/docs/ahc-ws-component.adoc
@@ -52,7 +52,7 @@ The AHC Websocket component supports 8 options, which are listed below.
 | *client* (advanced) | To use a custom AsyncHttpClient |  | AsyncHttpClient
 | *binding* (advanced) | To use a custom AhcBinding which allows to control how to bind between AHC and Camel. |  | AhcBinding
 | *clientConfig* (advanced) | To configure the AsyncHttpClient to use a custom com.ning.http.client.AsyncHttpClientConfig instance. |  | AsyncHttpClientConfig
-| *sslContextParameters* (security) | Reference to a org.apache.camel.util.jsse.SSLContextParameters in the Registry. Note that configuring this option will override any SSL/TLS configuration options provided through the clientConfig option at the endpoint or component level. |  | SSLContextParameters
+| *sslContextParameters* (security) | Reference to a org.apache.camel.support.jsse.SSLContextParameters in the Registry. Note that configuring this option will override any SSL/TLS configuration options provided through the clientConfig option at the endpoint or component level. |  | SSLContextParameters
 | *allowJavaSerialized Object* (advanced) | Whether to allow java serialization when a request uses context-type=application/x-java-serialized-object This is by default turned off. If you enable this then be aware that Java will deserialize the incoming data from the request to Java and that can be a potential security risk. | false | boolean
 | *useGlobalSslContext Parameters* (security) | Enable usage of global SSL context parameters. | false | boolean
 | *headerFilterStrategy* (filter) | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. |  | HeaderFilterStrategy
@@ -105,7 +105,7 @@ with the following path and query parameters:
 | *clientConfigOptions* (advanced) | To configure the AsyncHttpClientConfig using the key/values from the Map. |  | Map
 | *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
 | *clientConfigRealmOptions* (security) | To configure the AsyncHttpClientConfig Realm using the key/values from the Map. |  | Map
-| *sslContextParameters* (security) | Reference to a org.apache.camel.util.jsse.SSLContextParameters in the Registry. This reference overrides any configured SSLContextParameters at the component level. See Using the JSSE Configuration Utility. Note that configuring this option will override any SSL/TLS configuration options provided through the clientConfig option at the endpoint or component level. |  | SSLContextParameters
+| *sslContextParameters* (security) | Reference to a org.apache.camel.support.jsse.SSLContextParameters in the Registry. This reference overrides any configured SSLContextParameters at the component level. See Using the JSSE Configuration Utility. Note that configuring this option will override any SSL/TLS configuration options provided through the clientConfig option at the endpoint or component level. |  | SSLContextParameters
 |===
 // endpoint options: END
 // spring-boot-auto-configure options: START
diff --git a/components/camel-ipfs/src/main/docs/ipfs-component.adoc b/components/camel-ipfs/src/main/docs/ipfs-component.adoc
index a88cc10..a975f43 100644
--- a/components/camel-ipfs/src/main/docs/ipfs-component.adoc
+++ b/components/camel-ipfs/src/main/docs/ipfs-component.adoc
@@ -66,6 +66,8 @@ with the following path and query parameters:
 
 The component supports 2 options, which are listed below.
 
+
+
 [width="100%",cols="2,5,^1,2",options="header"]
 |===
 | Name | Description | Default | Type
diff --git a/components/readme.adoc b/components/readme.adoc
index e861795..77c121e 100644
--- a/components/readme.adoc
+++ b/components/readme.adoc
@@ -2,7 +2,7 @@ Components
 ^^^^^^^^^^
 
 // components: START
-Number of Components: 282 in 187 JAR artifacts (1 deprecated)
+Number of Components: 283 in 188 JAR artifacts (1 deprecated)
 
 [width="100%",cols="4,1,5",options="header"]
 |===
@@ -389,6 +389,9 @@ Number of Components: 282 in 187 JAR artifacts (1 deprecated)
 | link:camel-influxdb/src/main/docs/influxdb-component.adoc[InfluxDB] (camel-influxdb) +
 `influxdb:connectionBean` | 2.18 | The influxdb component allows you to interact with InfluxDB, a time series database.
 
+| link:camel-ipfs/src/main/docs/ipfs-component.adoc[IPFS] (camel-ipfs) +
+`ipfs:host:port/cmd` | 2.23 | The camel-ipfs component provides access to the Interplanetary File System (IPFS).
+
 | link:camel-irc/src/main/docs/irc-component.adoc[IRC] (camel-irc) +
 `irc:hostname:port` | 1.1 | The irc component implements an IRC (Internet Relay Chat) transport.
 
diff --git a/docs/user-manual/en/SUMMARY.md b/docs/user-manual/en/SUMMARY.md
index 2a893dc..e9cbb6e 100644
--- a/docs/user-manual/en/SUMMARY.md
+++ b/docs/user-manual/en/SUMMARY.md
@@ -286,6 +286,7 @@
 	* [IMAP](imap-component.adoc)
 	* [Infinispan](infinispan-component.adoc)
 	* [InfluxDB](influxdb-component.adoc)
+	* [IPFS](ipfs-component.adoc)
 	* [IRC](irc-component.adoc)
 	* [IronMQ](ironmq-component.adoc)
 	* [JBPM](jbpm-component.adoc)
diff --git a/platforms/spring-boot/components-starter/camel-ahc-ws-starter/src/main/java/org/apache/camel/component/ahc/ws/springboot/WsComponentConfiguration.java b/platforms/spring-boot/components-starter/camel-ahc-ws-starter/src/main/java/org/apache/camel/component/ahc/ws/springboot/WsComponentConfiguration.java
index dc14b00..b551fc7 100644
--- a/platforms/spring-boot/components-starter/camel-ahc-ws-starter/src/main/java/org/apache/camel/component/ahc/ws/springboot/WsComponentConfiguration.java
+++ b/platforms/spring-boot/components-starter/camel-ahc-ws-starter/src/main/java/org/apache/camel/component/ahc/ws/springboot/WsComponentConfiguration.java
@@ -54,7 +54,7 @@ public class WsComponentConfiguration
      */
     private String clientConfig;
     /**
-     * Reference to a org.apache.camel.util.jsse.SSLContextParameters in the
+     * Reference to a org.apache.camel.support.jsse.SSLContextParameters in the
      * Registry. Note that configuring this option will override any SSL/TLS
      * configuration options provided through the clientConfig option at the
      * endpoint or component level. The option is a
diff --git a/platforms/spring-boot/spring-boot-dm/camel-spring-boot-dependencies/pom.xml b/platforms/spring-boot/spring-boot-dm/camel-spring-boot-dependencies/pom.xml
index eb19d4b..e3deae7 100644
--- a/platforms/spring-boot/spring-boot-dm/camel-spring-boot-dependencies/pom.xml
+++ b/platforms/spring-boot/spring-boot-dm/camel-spring-boot-dependencies/pom.xml
@@ -172,6 +172,11 @@
         <version>1.7</version>
       </dependency>
       <dependency>
+        <groupId>io.nessus</groupId>
+        <artifactId>nessus-ipfs</artifactId>
+        <version>1.0.0.Beta1</version>
+      </dependency>
+      <dependency>
         <groupId>javax.annotation</groupId>
         <artifactId>jsr250-api</artifactId>
         <version>1.0</version>
@@ -1376,6 +1381,16 @@
       </dependency>
       <dependency>
         <groupId>org.apache.camel</groupId>
+        <artifactId>camel-ipfs</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.camel</groupId>
+        <artifactId>camel-ipfs-starter</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.camel</groupId>
         <artifactId>camel-irc</artifactId>
         <version>${project.version}</version>
       </dependency>


[camel] 06/08: CAMEL-12810 - Fixed CS

Posted by ac...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

acosentino pushed a commit to branch sandbox/camel-3.x
in repository https://gitbox.apache.org/repos/asf/camel.git

commit ce01bc429fb2089cd543fe478c45da273a4768eb
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Thu Nov 15 14:28:11 2018 +0100

    CAMEL-12810 - Fixed CS
---
 .../apache/camel/component/ipfs/IPFSComponent.java | 22 ++++---
 .../apache/camel/component/ipfs/IPFSEndpoint.java  | 13 ++--
 .../apache/camel/component/ipfs/IPFSProducer.java  | 39 ++++++-----
 .../camel/component/ipfs/SimpleIPFSTest.java       | 76 ++++++++++------------
 4 files changed, 78 insertions(+), 72 deletions(-)

diff --git a/components/camel-ipfs/src/main/java/org/apache/camel/component/ipfs/IPFSComponent.java b/components/camel-ipfs/src/main/java/org/apache/camel/component/ipfs/IPFSComponent.java
index 9d5b228..f6cb6f8 100644
--- a/components/camel-ipfs/src/main/java/org/apache/camel/component/ipfs/IPFSComponent.java
+++ b/components/camel-ipfs/src/main/java/org/apache/camel/component/ipfs/IPFSComponent.java
@@ -19,16 +19,16 @@ package org.apache.camel.component.ipfs;
 import java.net.URI;
 import java.util.Map;
 
-import org.apache.camel.Endpoint;
-import org.apache.camel.impl.DefaultComponent;
-
 import io.nessus.ipfs.IPFSClient;
 import io.nessus.ipfs.impl.DefaultIPFSClient;
 
+import org.apache.camel.Endpoint;
+import org.apache.camel.impl.DefaultComponent;
+
 public class IPFSComponent extends DefaultComponent {
 
     private IPFSClient client;
-    
+
     @Override
     protected Endpoint createEndpoint(String urispec, String remaining, Map<String, Object> params) throws Exception {
 
@@ -42,15 +42,19 @@ public class IPFSComponent extends DefaultComponent {
         int port = uri.getPort();
         String cmd = remaining;
         if (!cmd.equals(host)) {
-            if (host != null) config.setIpfsHost(host);
-            if (port > 0) config.setIpfsPort(port);
+            if (host != null) {
+                config.setIpfsHost(host);
+            }
+            if (port > 0) {
+                config.setIpfsPort(port);
+            }
             int idx = cmd.indexOf('/');
             cmd = cmd.substring(idx + 1);
         }
         config.setIpfsCmd(cmd);
-        
+
         client = createClient(config);
-        
+
         return new IPFSEndpoint(urispec, this, config);
     }
 
@@ -61,4 +65,4 @@ public class IPFSComponent extends DefaultComponent {
     private synchronized IPFSClient createClient(IPFSConfiguration config) {
         return new DefaultIPFSClient(config.getIpfsHost(), config.getIpfsPort());
     }
-}
\ No newline at end of file
+}
diff --git a/components/camel-ipfs/src/main/java/org/apache/camel/component/ipfs/IPFSEndpoint.java b/components/camel-ipfs/src/main/java/org/apache/camel/component/ipfs/IPFSEndpoint.java
index 6709332..0494151 100644
--- a/components/camel-ipfs/src/main/java/org/apache/camel/component/ipfs/IPFSEndpoint.java
+++ b/components/camel-ipfs/src/main/java/org/apache/camel/component/ipfs/IPFSEndpoint.java
@@ -23,6 +23,8 @@ import java.util.List;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Future;
 
+import io.nessus.ipfs.IPFSClient;
+
 import org.apache.camel.Consumer;
 import org.apache.camel.Processor;
 import org.apache.camel.Producer;
@@ -31,17 +33,16 @@ import org.apache.camel.impl.DefaultEndpoint;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
 
-import io.nessus.ipfs.IPFSClient;
-
 /**
- * The camel-ipfs component provides access to the Interplanetary File System (IPFS).
+ * The camel-ipfs component provides access to the Interplanetary File System
+ * (IPFS).
  */
 @UriEndpoint(firstVersion = "2.23.0", scheme = "ipfs", title = "IPFS", syntax = "ipfs:host:port/cmd", producerOnly = true, label = "file,ipfs")
 public class IPFSEndpoint extends DefaultEndpoint {
 
     @UriParam
     private final IPFSConfiguration configuration;
-    
+
     public IPFSEndpoint(String uri, IPFSComponent component, IPFSConfiguration configuration) {
         super(uri, component);
         this.configuration = configuration;
@@ -49,7 +50,7 @@ public class IPFSEndpoint extends DefaultEndpoint {
 
     @Override
     public IPFSComponent getComponent() {
-        return (IPFSComponent) super.getComponent();
+        return (IPFSComponent)super.getComponent();
     }
 
     @Override
@@ -79,7 +80,7 @@ public class IPFSEndpoint extends DefaultEndpoint {
             throw new IllegalArgumentException("Unsupported command: " + cmd);
         }
     }
-    
+
     String ipfsVersion() throws IOException {
         return ipfs().version();
     }
diff --git a/components/camel-ipfs/src/main/java/org/apache/camel/component/ipfs/IPFSProducer.java b/components/camel-ipfs/src/main/java/org/apache/camel/component/ipfs/IPFSProducer.java
index 0f6e533..1554927 100644
--- a/components/camel-ipfs/src/main/java/org/apache/camel/component/ipfs/IPFSProducer.java
+++ b/components/camel-ipfs/src/main/java/org/apache/camel/component/ipfs/IPFSProducer.java
@@ -23,19 +23,18 @@ import java.nio.file.Paths;
 import java.util.List;
 
 import org.apache.camel.Exchange;
-import org.apache.camel.impl.DefaultProducer;
-
 import org.apache.camel.component.ipfs.IPFSConfiguration.IPFSCommand;
+import org.apache.camel.impl.DefaultProducer;
 
 public class IPFSProducer extends DefaultProducer {
-    
+
     public IPFSProducer(IPFSEndpoint endpoint) {
         super(endpoint);
     }
 
     @Override
     public IPFSEndpoint getEndpoint() {
-        return (IPFSEndpoint) super.getEndpoint();
+        return (IPFSEndpoint)super.getEndpoint();
     }
 
     @Override
@@ -43,14 +42,14 @@ public class IPFSProducer extends DefaultProducer {
 
         IPFSEndpoint endpoint = getEndpoint();
         IPFSCommand cmd = endpoint.getCommand();
-        
+
         if (IPFSCommand.version == cmd) {
-            
+
             String resp = endpoint.ipfsVersion();
             exchange.getMessage().setBody(resp);
-            
-        }  else if (IPFSCommand.add == cmd) {
-            
+
+        } else if (IPFSCommand.add == cmd) {
+
             Path path = pathFromBody(exchange);
             List<String> cids = endpoint.ipfsAdd(path);
             Object resp = cids;
@@ -58,20 +57,20 @@ public class IPFSProducer extends DefaultProducer {
                 resp = cids.size() > 0 ? cids.get(0) : null;
             }
             exchange.getMessage().setBody(resp);
-            
-        }  else if (IPFSCommand.cat == cmd) {
+
+        } else if (IPFSCommand.cat == cmd) {
 
             String cid = exchange.getMessage().getBody(String.class);
             InputStream resp = endpoint.ipfsCat(cid);
             exchange.getMessage().setBody(resp);
-            
-        }  else if (IPFSCommand.get == cmd) {
+
+        } else if (IPFSCommand.get == cmd) {
 
             Path outdir = endpoint.getConfiguration().getOutdir();
             String cid = exchange.getMessage().getBody(String.class);
             Path resp = endpoint.ipfsGet(cid, outdir);
             exchange.getMessage().setBody(resp);
-            
+
         } else {
             throw new UnsupportedOperationException(cmd.toString());
         }
@@ -79,9 +78,15 @@ public class IPFSProducer extends DefaultProducer {
 
     private Path pathFromBody(Exchange exchange) {
         Object body = exchange.getMessage().getBody();
-        if (body instanceof Path) return (Path) body;
-        if (body instanceof String) return Paths.get((String) body);
-        if (body instanceof File) return ((File) body).toPath();
+        if (body instanceof Path) {
+            return (Path)body;
+        }
+        if (body instanceof String) {
+            return Paths.get((String)body);
+        }
+        if (body instanceof File) {
+            return ((File)body).toPath();
+        }
         throw new IllegalArgumentException("Invalid path: " + body);
     }
 }
diff --git a/components/camel-ipfs/src/test/java/org/apache/camel/component/ipfs/SimpleIPFSTest.java b/components/camel-ipfs/src/test/java/org/apache/camel/component/ipfs/SimpleIPFSTest.java
index 589b919..07aec74 100644
--- a/components/camel-ipfs/src/test/java/org/apache/camel/component/ipfs/SimpleIPFSTest.java
+++ b/components/camel-ipfs/src/test/java/org/apache/camel/component/ipfs/SimpleIPFSTest.java
@@ -1,12 +1,10 @@
-/*
- * #%L
- * Wildfly Camel :: Testsuite
- * %%
- * Copyright (C) 2013 - 2014 RedHat
- * %%
- * 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
+/**
+ * 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
  *
@@ -15,9 +13,7 @@
  * 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.
- * #L%
  */
-
 package org.apache.camel.component.ipfs;
 
 import java.io.ByteArrayOutputStream;
@@ -29,6 +25,8 @@ import java.nio.file.Paths;
 import java.util.Arrays;
 import java.util.List;
 
+import io.nessus.utils.StreamUtils;
+
 import org.apache.camel.CamelContext;
 import org.apache.camel.ProducerTemplate;
 import org.apache.camel.builder.RouteBuilder;
@@ -37,8 +35,6 @@ import org.junit.Assert;
 import org.junit.Assume;
 import org.junit.Test;
 
-import io.nessus.utils.StreamUtils;
-
 public class SimpleIPFSTest {
 
     @Test
@@ -56,7 +52,7 @@ public class SimpleIPFSTest {
 
         camelctx.start();
         assumeIPFS(camelctx);
-        
+
         try {
             ProducerTemplate producer = camelctx.createProducerTemplate();
             String resA = producer.requestBody("direct:startA", null, String.class);
@@ -73,8 +69,8 @@ public class SimpleIPFSTest {
     @Test
     public void ipfsAddSingle() throws Exception {
 
-        String HASH = "QmYgjSRbXFPdPYKqQSnUjmXLYLudVahEJQotMaAJKt6Lbd";
-        
+        String hash = "QmYgjSRbXFPdPYKqQSnUjmXLYLudVahEJQotMaAJKt6Lbd";
+
         CamelContext camelctx = new DefaultCamelContext();
         camelctx.addRoutes(new RouteBuilder() {
             @Override
@@ -84,14 +80,14 @@ public class SimpleIPFSTest {
         });
 
         Path path = Paths.get("src/test/resources/html/index.html");
-        
+
         camelctx.start();
         assumeIPFS(camelctx);
-        
+
         try {
             ProducerTemplate producer = camelctx.createProducerTemplate();
             String res = producer.requestBody("direct:start", path, String.class);
-            Assert.assertEquals(HASH, res);
+            Assert.assertEquals(hash, res);
         } finally {
             camelctx.stop();
         }
@@ -101,8 +97,8 @@ public class SimpleIPFSTest {
     @SuppressWarnings("unchecked")
     public void ipfsAddRecursive() throws Exception {
 
-        String HASH = "Qme6hd6tYXTFb7bb7L3JZ5U6ygktpAHKxbaeffYyQN85mW";
-        
+        String hash = "Qme6hd6tYXTFb7bb7L3JZ5U6ygktpAHKxbaeffYyQN85mW";
+
         CamelContext camelctx = new DefaultCamelContext();
         camelctx.addRoutes(new RouteBuilder() {
             @Override
@@ -112,15 +108,15 @@ public class SimpleIPFSTest {
         });
 
         Path path = Paths.get("src/test/resources/html");
-        
+
         camelctx.start();
         assumeIPFS(camelctx);
-        
+
         try {
             ProducerTemplate producer = camelctx.createProducerTemplate();
             List<String> res = producer.requestBody("direct:start", path, List.class);
             Assert.assertEquals(10, res.size());
-            Assert.assertEquals(HASH, res.get(9));
+            Assert.assertEquals(hash, res.get(9));
         } finally {
             camelctx.stop();
         }
@@ -129,8 +125,8 @@ public class SimpleIPFSTest {
     @Test
     public void ipfsCat() throws Exception {
 
-        String HASH = "QmUD7uG5prAMHbcCfp4x1G1mMSpywcSMHTGpq62sbpDAg6";
-        
+        String hash = "QmUD7uG5prAMHbcCfp4x1G1mMSpywcSMHTGpq62sbpDAg6";
+
         CamelContext camelctx = new DefaultCamelContext();
         camelctx.addRoutes(new RouteBuilder() {
             @Override
@@ -141,10 +137,10 @@ public class SimpleIPFSTest {
 
         camelctx.start();
         assumeIPFS(camelctx);
-        
+
         try {
             ProducerTemplate producer = camelctx.createProducerTemplate();
-            InputStream res = producer.requestBody("direct:start", HASH, InputStream.class);
+            InputStream res = producer.requestBody("direct:start", hash, InputStream.class);
             verifyFileContent(res);
         } finally {
             camelctx.stop();
@@ -154,8 +150,8 @@ public class SimpleIPFSTest {
     @Test
     public void ipfsGetSingle() throws Exception {
 
-        String HASH = "QmUD7uG5prAMHbcCfp4x1G1mMSpywcSMHTGpq62sbpDAg6";
-        
+        String hash = "QmUD7uG5prAMHbcCfp4x1G1mMSpywcSMHTGpq62sbpDAg6";
+
         CamelContext camelctx = new DefaultCamelContext();
         camelctx.addRoutes(new RouteBuilder() {
             @Override
@@ -166,11 +162,11 @@ public class SimpleIPFSTest {
 
         camelctx.start();
         assumeIPFS(camelctx);
-        
+
         try {
             ProducerTemplate producer = camelctx.createProducerTemplate();
-            Path res = producer.requestBody("direct:start", HASH, Path.class);
-            Assert.assertEquals(Paths.get("target", HASH), res);
+            Path res = producer.requestBody("direct:start", hash, Path.class);
+            Assert.assertEquals(Paths.get("target", hash), res);
             verifyFileContent(new FileInputStream(res.toFile()));
         } finally {
             camelctx.stop();
@@ -180,8 +176,8 @@ public class SimpleIPFSTest {
     @Test
     public void ipfsGetRecursive() throws Exception {
 
-        String HASH = "Qme6hd6tYXTFb7bb7L3JZ5U6ygktpAHKxbaeffYyQN85mW";
-        
+        String hash = "Qme6hd6tYXTFb7bb7L3JZ5U6ygktpAHKxbaeffYyQN85mW";
+
         CamelContext camelctx = new DefaultCamelContext();
         camelctx.addRoutes(new RouteBuilder() {
             @Override
@@ -192,11 +188,11 @@ public class SimpleIPFSTest {
 
         camelctx.start();
         assumeIPFS(camelctx);
-        
+
         try {
             ProducerTemplate producer = camelctx.createProducerTemplate();
-            Path res = producer.requestBody("direct:start", HASH, Path.class);
-            Assert.assertEquals(Paths.get("target", HASH), res);
+            Path res = producer.requestBody("direct:start", hash, Path.class);
+            Assert.assertEquals(Paths.get("target", hash), res);
             Assert.assertTrue(res.toFile().isDirectory());
             Assert.assertTrue(res.resolve("index.html").toFile().exists());
         } finally {
@@ -207,11 +203,11 @@ public class SimpleIPFSTest {
     private void verifyFileContent(InputStream ins) throws IOException {
         ByteArrayOutputStream baos = new ByteArrayOutputStream();
         StreamUtils.copyStream(ins, baos);
-        Assert.assertEquals("The quick brown fox jumps over the lazy dog.", new String (baos.toByteArray()));
+        Assert.assertEquals("The quick brown fox jumps over the lazy dog.", new String(baos.toByteArray()));
     }
 
     private void assumeIPFS(CamelContext camelctx) {
         IPFSComponent comp = camelctx.getComponent("ipfs", IPFSComponent.class);
         Assume.assumeTrue(comp.getIPFSClient().hasConnection());
     }
-}
\ No newline at end of file
+}