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/11/15 13:31:28 UTC

[camel] branch master updated (7ea92b4 -> 8e96df6)

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

acosentino pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git.


    from 7ea92b4  CAMEL-12932 - Fixed CS
     new 229d37d  [IPFS] Add initial support for IPFS
     new 16d6aeb  CAMEL-12810 - Added explicit repository for Nessus and Spring Boot starter related
     new 61517d6  CAMEL-12810 - Added camel-ipfs to kit
     new f8b59a5  Regen
     new 8e96df6  CAMEL-12810 - Fixed CS

The 5 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 +
 .../camel-aws/src/main/docs/aws-sqs-component.adoc |   3 +-
 components/camel-ipfs/pom.xml                      |  76 ++++++++
 .../camel-ipfs/src/main/docs/ipfs-component.adoc   |  93 +++++++++
 .../apache/camel/component/ipfs/IPFSComponent.java |  68 +++++++
 .../camel/component/ipfs/IPFSConfiguration.java    |  79 ++++++++
 .../apache/camel/component/ipfs/IPFSEndpoint.java  | 108 +++++++++++
 .../apache/camel/component/ipfs/IPFSProducer.java  |  92 +++++++++
 .../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 ++
 .../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         | 164 +++++++++-------
 32 files changed, 1264 insertions(+), 68 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/guice-maven-plugin => components/camel-ipfs}/src/main/resources/META-INF/LICENSE.txt (100%)
 copy {tooling/maven/guice-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/guice-maven-plugin => platforms/spring-boot/components-starter/camel-ipfs-starter}/src/main/resources/META-INF/LICENSE.txt (100%)
 copy {tooling/maven/guice-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] 01/05: [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 master
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 229d37d7e4de9030c19532f570e5683df7c2d4a1
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 8c63bdb..93dc9bd 100644
--- a/apache-camel/src/main/descriptors/common-bin.xml
+++ b/apache-camel/src/main/descriptors/common-bin.xml
@@ -134,6 +134,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 4356c93..a280e25 100644
--- a/components/pom.xml
+++ b/components/pom.xml
@@ -55,6 +55,7 @@
     <module>camel-http</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 983ecc6..f3bc214 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>
@@ -4930,6 +4931,11 @@
         <version>${pdfbox-version}</version>
       </dependency>
 
+      <dependency>
+        <groupId>io.nessus</groupId>
+        <artifactId>nessus-ipfs</artifactId>
+        <version>${nessus-version}</version>
+      </dependency>
     </dependencies>
   </dependencyManagement>
 


[camel] 04/05: Regen

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

acosentino pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git

commit f8b59a591a67100ad482cdcb091ac2d97e06abd0
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Thu Nov 15 14:20:08 2018 +0100

    Regen
---
 .../camel-aws/src/main/docs/aws-sqs-component.adoc |   3 +-
 .../camel-ipfs/src/main/docs/ipfs-component.adoc   |   2 +
 components/readme.adoc                             |   5 +-
 docs/user-manual/en/SUMMARY.md                     |   1 +
 .../camel-spring-boot-dependencies/pom.xml         | 164 ++++++++++++---------
 5 files changed, 107 insertions(+), 68 deletions(-)

diff --git a/components/camel-aws/src/main/docs/aws-sqs-component.adoc b/components/camel-aws/src/main/docs/aws-sqs-component.adoc
index 970bb77..d5dc6e8 100644
--- a/components/camel-aws/src/main/docs/aws-sqs-component.adoc
+++ b/components/camel-aws/src/main/docs/aws-sqs-component.adoc
@@ -128,7 +128,7 @@ with the following path and query parameters:
 === Spring Boot Auto-Configuration
 
 
-The component supports 30 options, which are listed below.
+The component supports 31 options, which are listed below.
 
 
 
@@ -142,6 +142,7 @@ The component supports 30 options, which are listed below.
 | *camel.component.aws-sqs.configuration.attribute-names* | A list of attribute names to receive when consuming. Multiple names can be separated by comma. |  | String
 | *camel.component.aws-sqs.configuration.concurrent-consumers* | Allows you to use multiple threads to poll the sqs queue to increase throughput | 1 | Integer
 | *camel.component.aws-sqs.configuration.default-visibility-timeout* | The default visibility timeout (in seconds) |  | Integer
+| *camel.component.aws-sqs.configuration.delay-queue* | Define if you want to apply delaySeconds option to the queue or on single messages | false | Boolean
 | *camel.component.aws-sqs.configuration.delay-seconds* | Delay sending messages for a number of seconds. |  | Integer
 | *camel.component.aws-sqs.configuration.delete-after-read* | Delete message from SQS after it has been read | true | Boolean
 | *camel.component.aws-sqs.configuration.delete-if-filtered* | Whether or not to send the DeleteMessage to the SQS queue if an exchange fails to get through a filter. If 'false' and exchange does not make it through a Camel filter upstream in the route, then don't send DeleteMessage. | true | Boolean
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 5122b42..163b183 100644
--- a/components/readme.adoc
+++ b/components/readme.adoc
@@ -2,7 +2,7 @@ Components
 ^^^^^^^^^^
 
 // components: START
-Number of Components: 303 in 205 JAR artifacts (22 deprecated)
+Number of Components: 304 in 206 JAR artifacts (22 deprecated)
 
 [width="100%",cols="4,1,5",options="header"]
 |===
@@ -413,6 +413,9 @@ Number of Components: 303 in 205 JAR artifacts (22 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 628f559..21fbd47 100644
--- a/docs/user-manual/en/SUMMARY.md
+++ b/docs/user-manual/en/SUMMARY.md
@@ -294,6 +294,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)
 	* [JavaSpace](javaspace-component.adoc)
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 2d1d0f0..0c7bb41 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>
@@ -1391,6 +1396,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>
@@ -3464,7 +3479,7 @@
       <dependency>
         <groupId>org.knowm.xchange</groupId>
         <artifactId>xchange-core</artifactId>
-        <version>4.3.11</version>
+        <version>4.3.12</version>
       </dependency>
       <dependency>
         <groupId>org.mozilla</groupId>
@@ -3474,342 +3489,359 @@
       <dependency>
         <groupId>org.optaplanner</groupId>
         <artifactId>optaplanner-benchmark</artifactId>
-        <version>7.3.0.Final</version>
+        <version>7.14.0.Final</version>
       </dependency>
       <dependency>
         <groupId>org.optaplanner</groupId>
         <artifactId>optaplanner-benchmark</artifactId>
-        <version>7.3.0.Final</version>
+        <version>7.14.0.Final</version>
         <classifier>sources</classifier>
       </dependency>
       <dependency>
         <groupId>org.optaplanner</groupId>
         <artifactId>optaplanner-benchmark</artifactId>
-        <version>7.3.0.Final</version>
+        <version>7.14.0.Final</version>
         <type>test-jar</type>
       </dependency>
       <dependency>
         <groupId>org.optaplanner</groupId>
         <artifactId>optaplanner-benchmark</artifactId>
-        <version>7.3.0.Final</version>
+        <version>7.14.0.Final</version>
         <classifier>javadoc</classifier>
       </dependency>
       <dependency>
         <groupId>org.optaplanner</groupId>
         <artifactId>optaplanner-core</artifactId>
-        <version>7.3.0.Final</version>
+        <version>7.14.0.Final</version>
       </dependency>
       <dependency>
         <groupId>org.optaplanner</groupId>
         <artifactId>optaplanner-core</artifactId>
-        <version>7.3.0.Final</version>
+        <version>7.14.0.Final</version>
         <classifier>sources</classifier>
       </dependency>
       <dependency>
         <groupId>org.optaplanner</groupId>
         <artifactId>optaplanner-core</artifactId>
-        <version>7.3.0.Final</version>
+        <version>7.14.0.Final</version>
         <type>test-jar</type>
       </dependency>
       <dependency>
         <groupId>org.optaplanner</groupId>
         <artifactId>optaplanner-core</artifactId>
-        <version>7.3.0.Final</version>
+        <version>7.14.0.Final</version>
         <classifier>javadoc</classifier>
       </dependency>
       <dependency>
         <groupId>org.optaplanner</groupId>
         <artifactId>optaplanner-core-gwt</artifactId>
-        <version>7.3.0.Final</version>
+        <version>7.14.0.Final</version>
         <type>gwt-lib</type>
       </dependency>
       <dependency>
         <groupId>org.optaplanner</groupId>
         <artifactId>optaplanner-distribution</artifactId>
-        <version>7.3.0.Final</version>
+        <version>7.14.0.Final</version>
         <type>zip</type>
       </dependency>
       <dependency>
         <groupId>org.optaplanner</groupId>
         <artifactId>optaplanner-docs</artifactId>
-        <version>7.3.0.Final</version>
+        <version>7.14.0.Final</version>
         <type>zip</type>
       </dependency>
       <dependency>
         <groupId>org.optaplanner</groupId>
         <artifactId>optaplanner-examples</artifactId>
-        <version>7.3.0.Final</version>
+        <version>7.14.0.Final</version>
       </dependency>
       <dependency>
         <groupId>org.optaplanner</groupId>
         <artifactId>optaplanner-examples</artifactId>
-        <version>7.3.0.Final</version>
+        <version>7.14.0.Final</version>
         <classifier>sources</classifier>
       </dependency>
       <dependency>
         <groupId>org.optaplanner</groupId>
         <artifactId>optaplanner-examples</artifactId>
-        <version>7.3.0.Final</version>
+        <version>7.14.0.Final</version>
         <type>test-jar</type>
       </dependency>
       <dependency>
         <groupId>org.optaplanner</groupId>
         <artifactId>optaplanner-persistence-common</artifactId>
-        <version>7.3.0.Final</version>
+        <version>7.14.0.Final</version>
       </dependency>
       <dependency>
         <groupId>org.optaplanner</groupId>
         <artifactId>optaplanner-persistence-common</artifactId>
-        <version>7.3.0.Final</version>
+        <version>7.14.0.Final</version>
         <classifier>sources</classifier>
       </dependency>
       <dependency>
         <groupId>org.optaplanner</groupId>
         <artifactId>optaplanner-persistence-common</artifactId>
-        <version>7.3.0.Final</version>
+        <version>7.14.0.Final</version>
         <type>test-jar</type>
       </dependency>
       <dependency>
         <groupId>org.optaplanner</groupId>
         <artifactId>optaplanner-persistence-common</artifactId>
-        <version>7.3.0.Final</version>
+        <version>7.14.0.Final</version>
         <classifier>javadoc</classifier>
       </dependency>
       <dependency>
         <groupId>org.optaplanner</groupId>
         <artifactId>optaplanner-persistence-jackson</artifactId>
-        <version>7.3.0.Final</version>
+        <version>7.14.0.Final</version>
       </dependency>
       <dependency>
         <groupId>org.optaplanner</groupId>
         <artifactId>optaplanner-persistence-jackson</artifactId>
-        <version>7.3.0.Final</version>
+        <version>7.14.0.Final</version>
         <classifier>sources</classifier>
       </dependency>
       <dependency>
         <groupId>org.optaplanner</groupId>
         <artifactId>optaplanner-persistence-jackson</artifactId>
-        <version>7.3.0.Final</version>
+        <version>7.14.0.Final</version>
         <type>test-jar</type>
       </dependency>
       <dependency>
         <groupId>org.optaplanner</groupId>
         <artifactId>optaplanner-persistence-jackson</artifactId>
-        <version>7.3.0.Final</version>
+        <version>7.14.0.Final</version>
         <classifier>javadoc</classifier>
       </dependency>
       <dependency>
         <groupId>org.optaplanner</groupId>
         <artifactId>optaplanner-persistence-jaxb</artifactId>
-        <version>7.3.0.Final</version>
+        <version>7.14.0.Final</version>
       </dependency>
       <dependency>
         <groupId>org.optaplanner</groupId>
         <artifactId>optaplanner-persistence-jaxb</artifactId>
-        <version>7.3.0.Final</version>
+        <version>7.14.0.Final</version>
         <classifier>sources</classifier>
       </dependency>
       <dependency>
         <groupId>org.optaplanner</groupId>
         <artifactId>optaplanner-persistence-jaxb</artifactId>
-        <version>7.3.0.Final</version>
+        <version>7.14.0.Final</version>
         <type>test-jar</type>
       </dependency>
       <dependency>
         <groupId>org.optaplanner</groupId>
         <artifactId>optaplanner-persistence-jaxb</artifactId>
-        <version>7.3.0.Final</version>
+        <version>7.14.0.Final</version>
         <classifier>javadoc</classifier>
       </dependency>
       <dependency>
         <groupId>org.optaplanner</groupId>
         <artifactId>optaplanner-persistence-jpa</artifactId>
-        <version>7.3.0.Final</version>
+        <version>7.14.0.Final</version>
       </dependency>
       <dependency>
         <groupId>org.optaplanner</groupId>
         <artifactId>optaplanner-persistence-jpa</artifactId>
-        <version>7.3.0.Final</version>
+        <version>7.14.0.Final</version>
         <classifier>sources</classifier>
       </dependency>
       <dependency>
         <groupId>org.optaplanner</groupId>
         <artifactId>optaplanner-persistence-jpa</artifactId>
-        <version>7.3.0.Final</version>
+        <version>7.14.0.Final</version>
         <type>test-jar</type>
       </dependency>
       <dependency>
         <groupId>org.optaplanner</groupId>
         <artifactId>optaplanner-persistence-jpa</artifactId>
-        <version>7.3.0.Final</version>
+        <version>7.14.0.Final</version>
         <classifier>javadoc</classifier>
       </dependency>
       <dependency>
         <groupId>org.optaplanner</groupId>
         <artifactId>optaplanner-persistence-xstream</artifactId>
-        <version>7.3.0.Final</version>
+        <version>7.14.0.Final</version>
       </dependency>
       <dependency>
         <groupId>org.optaplanner</groupId>
         <artifactId>optaplanner-persistence-xstream</artifactId>
-        <version>7.3.0.Final</version>
+        <version>7.14.0.Final</version>
         <classifier>sources</classifier>
       </dependency>
       <dependency>
         <groupId>org.optaplanner</groupId>
         <artifactId>optaplanner-persistence-xstream</artifactId>
-        <version>7.3.0.Final</version>
+        <version>7.14.0.Final</version>
         <type>test-jar</type>
       </dependency>
       <dependency>
         <groupId>org.optaplanner</groupId>
         <artifactId>optaplanner-persistence-xstream</artifactId>
-        <version>7.3.0.Final</version>
+        <version>7.14.0.Final</version>
         <classifier>javadoc</classifier>
       </dependency>
       <dependency>
         <groupId>org.optaplanner</groupId>
         <artifactId>optaplanner-test</artifactId>
-        <version>7.3.0.Final</version>
+        <version>7.14.0.Final</version>
       </dependency>
       <dependency>
         <groupId>org.optaplanner</groupId>
         <artifactId>optaplanner-test</artifactId>
-        <version>7.3.0.Final</version>
+        <version>7.14.0.Final</version>
         <classifier>sources</classifier>
       </dependency>
       <dependency>
         <groupId>org.optaplanner</groupId>
         <artifactId>optaplanner-test</artifactId>
-        <version>7.3.0.Final</version>
+        <version>7.14.0.Final</version>
         <type>test-jar</type>
       </dependency>
       <dependency>
         <groupId>org.optaplanner</groupId>
         <artifactId>optaplanner-test</artifactId>
-        <version>7.3.0.Final</version>
+        <version>7.14.0.Final</version>
         <classifier>javadoc</classifier>
       </dependency>
       <dependency>
         <groupId>org.optaplanner</groupId>
         <artifactId>optaplanner-wb-domain-editor-api</artifactId>
-        <version>7.3.0.Final</version>
+        <version>7.14.0.Final</version>
       </dependency>
       <dependency>
         <groupId>org.optaplanner</groupId>
         <artifactId>optaplanner-wb-domain-editor-api</artifactId>
-        <version>7.3.0.Final</version>
+        <version>7.14.0.Final</version>
         <classifier>sources</classifier>
       </dependency>
       <dependency>
         <groupId>org.optaplanner</groupId>
         <artifactId>optaplanner-wb-domain-editor-backend</artifactId>
-        <version>7.3.0.Final</version>
+        <version>7.14.0.Final</version>
       </dependency>
       <dependency>
         <groupId>org.optaplanner</groupId>
         <artifactId>optaplanner-wb-domain-editor-backend</artifactId>
-        <version>7.3.0.Final</version>
+        <version>7.14.0.Final</version>
         <classifier>sources</classifier>
       </dependency>
       <dependency>
         <groupId>org.optaplanner</groupId>
         <artifactId>optaplanner-wb-domain-editor-client</artifactId>
-        <version>7.3.0.Final</version>
+        <version>7.14.0.Final</version>
       </dependency>
       <dependency>
         <groupId>org.optaplanner</groupId>
         <artifactId>optaplanner-wb-domain-editor-client</artifactId>
-        <version>7.3.0.Final</version>
+        <version>7.14.0.Final</version>
         <classifier>sources</classifier>
       </dependency>
       <dependency>
         <groupId>org.optaplanner</groupId>
         <artifactId>optaplanner-wb-guided-rule-editor-api</artifactId>
-        <version>7.3.0.Final</version>
+        <version>7.14.0.Final</version>
       </dependency>
       <dependency>
         <groupId>org.optaplanner</groupId>
         <artifactId>optaplanner-wb-guided-rule-editor-api</artifactId>
-        <version>7.3.0.Final</version>
+        <version>7.14.0.Final</version>
         <classifier>sources</classifier>
       </dependency>
       <dependency>
         <groupId>org.optaplanner</groupId>
         <artifactId>optaplanner-wb-guided-rule-editor-backend</artifactId>
-        <version>7.3.0.Final</version>
+        <version>7.14.0.Final</version>
       </dependency>
       <dependency>
         <groupId>org.optaplanner</groupId>
         <artifactId>optaplanner-wb-guided-rule-editor-backend</artifactId>
-        <version>7.3.0.Final</version>
+        <version>7.14.0.Final</version>
         <classifier>sources</classifier>
       </dependency>
       <dependency>
         <groupId>org.optaplanner</groupId>
         <artifactId>optaplanner-wb-guided-rule-editor-client</artifactId>
-        <version>7.3.0.Final</version>
+        <version>7.14.0.Final</version>
       </dependency>
       <dependency>
         <groupId>org.optaplanner</groupId>
         <artifactId>optaplanner-wb-guided-rule-editor-client</artifactId>
-        <version>7.3.0.Final</version>
+        <version>7.14.0.Final</version>
         <classifier>sources</classifier>
       </dependency>
       <dependency>
         <groupId>org.optaplanner</groupId>
         <artifactId>optaplanner-wb-solver-editor-api</artifactId>
-        <version>7.3.0.Final</version>
+        <version>7.14.0.Final</version>
       </dependency>
       <dependency>
         <groupId>org.optaplanner</groupId>
         <artifactId>optaplanner-wb-solver-editor-api</artifactId>
-        <version>7.3.0.Final</version>
+        <version>7.14.0.Final</version>
         <classifier>sources</classifier>
       </dependency>
       <dependency>
         <groupId>org.optaplanner</groupId>
         <artifactId>optaplanner-wb-solver-editor-backend</artifactId>
-        <version>7.3.0.Final</version>
+        <version>7.14.0.Final</version>
       </dependency>
       <dependency>
         <groupId>org.optaplanner</groupId>
         <artifactId>optaplanner-wb-solver-editor-backend</artifactId>
-        <version>7.3.0.Final</version>
+        <version>7.14.0.Final</version>
         <classifier>sources</classifier>
       </dependency>
       <dependency>
         <groupId>org.optaplanner</groupId>
         <artifactId>optaplanner-wb-solver-editor-client</artifactId>
-        <version>7.3.0.Final</version>
+        <version>7.14.0.Final</version>
       </dependency>
       <dependency>
         <groupId>org.optaplanner</groupId>
         <artifactId>optaplanner-wb-solver-editor-client</artifactId>
-        <version>7.3.0.Final</version>
+        <version>7.14.0.Final</version>
         <classifier>sources</classifier>
       </dependency>
       <dependency>
         <groupId>org.optaplanner</groupId>
-        <artifactId>optaplanner-wb-upstream-model</artifactId>
-        <version>7.3.0.Final</version>
+        <artifactId>optaplanner-wb-ui</artifactId>
+        <version>7.14.0.Final</version>
+        <type>war</type>
       </dependency>
       <dependency>
         <groupId>org.optaplanner</groupId>
-        <artifactId>optaplanner-wb-upstream-model</artifactId>
-        <version>7.3.0.Final</version>
-        <classifier>sources</classifier>
+        <artifactId>optaplanner-webexamples</artifactId>
+        <version>7.14.0.Final</version>
+        <type>war</type>
       </dependency>
       <dependency>
         <groupId>org.optaplanner</groupId>
         <artifactId>optaplanner-webexamples</artifactId>
-        <version>7.3.0.Final</version>
-        <type>war</type>
+        <version>7.14.0.Final</version>
+        <classifier>sources</classifier>
       </dependency>
       <dependency>
         <groupId>org.optaplanner</groupId>
-        <artifactId>optaplanner-webexamples</artifactId>
-        <version>7.3.0.Final</version>
+        <artifactId>optaplanner-workbench-models-core</artifactId>
+        <version>7.14.0.Final</version>
+      </dependency>
+      <dependency>
+        <groupId>org.optaplanner</groupId>
+        <artifactId>optaplanner-workbench-models-core</artifactId>
+        <version>7.14.0.Final</version>
+        <classifier>sources</classifier>
+      </dependency>
+      <dependency>
+        <groupId>org.optaplanner</groupId>
+        <artifactId>optaplanner-workbench-models-datamodel-api</artifactId>
+        <version>7.14.0.Final</version>
+      </dependency>
+      <dependency>
+        <groupId>org.optaplanner</groupId>
+        <artifactId>optaplanner-workbench-models-datamodel-api</artifactId>
+        <version>7.14.0.Final</version>
         <classifier>sources</classifier>
       </dependency>
       <dependency>


[camel] 03/05: 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 master
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 61517d6fa614b1568226955652217dcffc1e46d9
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 93dc9bd..3436d48 100644
--- a/apache-camel/src/main/descriptors/common-bin.xml
+++ b/apache-camel/src/main/descriptors/common-bin.xml
@@ -458,6 +458,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 69a6f75..b826671 100644
--- a/bom/camel-bom/pom.xml
+++ b/bom/camel-bom/pom.xml
@@ -1190,6 +1190,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 f3bc214..fa9b2d0 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -1391,6 +1391,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>
@@ -2910,6 +2915,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] 02/05: 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 master
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 16d6aeb2637cdd95fa6850906ce8fb442421afec
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 |  56 +++---
 .../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, 481 insertions(+), 29 deletions(-)

diff --git a/components/camel-ipfs/pom.xml b/components/camel-ipfs/pom.xml
index 20b6f7c..f0ec0dc 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 56%
copy from components/camel-ipfs/pom.xml
copy to platforms/spring-boot/components-starter/camel-ipfs-starter/pom.xml
index 20b6f7c..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>
+    <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 8208920..d8d57c4 100644
--- a/platforms/spring-boot/components-starter/pom.xml
+++ b/platforms/spring-boot/components-starter/pom.xml
@@ -204,6 +204,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] 05/05: 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 master
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 8e96df649421455c745988630e5256572b5dd2e8
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
+}