You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2017/07/04 08:51:24 UTC

[1/3] camel git commit: CAMEL-11506: Added unit test

Repository: camel
Updated Branches:
  refs/heads/camel-2.19.x 54f77196e -> 26085bb4b


CAMEL-11506: Added unit test


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/45bce300
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/45bce300
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/45bce300

Branch: refs/heads/camel-2.19.x
Commit: 45bce300166e4f88b8e4c5b61f5f10196f8545b5
Parents: 54f7719
Author: Claus Ibsen <da...@apache.org>
Authored: Tue Jul 4 09:23:14 2017 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Tue Jul 4 10:50:52 2017 +0200

----------------------------------------------------------------------
 .../camel/catalog/maven/MavenVersionManagerTest.java    | 12 ++++++++++++
 1 file changed, 12 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/45bce300/platforms/camel-catalog-maven/src/test/java/org/apache/camel/catalog/maven/MavenVersionManagerTest.java
----------------------------------------------------------------------
diff --git a/platforms/camel-catalog-maven/src/test/java/org/apache/camel/catalog/maven/MavenVersionManagerTest.java b/platforms/camel-catalog-maven/src/test/java/org/apache/camel/catalog/maven/MavenVersionManagerTest.java
index 8342d2a..e9cdcb0 100644
--- a/platforms/camel-catalog-maven/src/test/java/org/apache/camel/catalog/maven/MavenVersionManagerTest.java
+++ b/platforms/camel-catalog-maven/src/test/java/org/apache/camel/catalog/maven/MavenVersionManagerTest.java
@@ -175,4 +175,16 @@ public class MavenVersionManagerTest extends TestCase {
 
         System.out.println("2.18.1 has " + components3 + " components");
     }
+
+    @Test
+    public void testLoadUnknownVersion() throws Exception {
+        MavenVersionManager manager = new MavenVersionManager();
+        String current = manager.getLoadedVersion();
+        assertNull(current);
+
+        // version 2.99 does not exists and cannot be loaded
+        boolean loaded = manager.loadVersion("2.99");
+        assertFalse(loaded);
+    }
+
 }


[2/3] camel git commit: CAMEL-11506: camel-catalog-maven should use Apache Commons http-client 3.1 to download http/https as it has support for timeout which the basic handler from the JDK does not.

Posted by da...@apache.org.
CAMEL-11506: camel-catalog-maven should use Apache Commons http-client 3.1 to download http/https as it has support for timeout which the basic handler from the JDK does not.


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/1e3afa58
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/1e3afa58
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/1e3afa58

Branch: refs/heads/camel-2.19.x
Commit: 1e3afa580ef01c4bb840691ac8882b32dec6a6b6
Parents: 45bce30
Author: Claus Ibsen <da...@apache.org>
Authored: Tue Jul 4 10:39:16 2017 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Tue Jul 4 10:50:59 2017 +0200

----------------------------------------------------------------------
 platforms/camel-catalog-maven/pom.xml           |  7 ++
 .../catalog/maven/MavenVersionManager.java      | 15 ++++
 .../catalog/maven/PatchedHttpClientHandler.java | 72 ++++++++++++++++++++
 3 files changed, 94 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/1e3afa58/platforms/camel-catalog-maven/pom.xml
----------------------------------------------------------------------
diff --git a/platforms/camel-catalog-maven/pom.xml b/platforms/camel-catalog-maven/pom.xml
index 53c29be..7c7ffa2 100644
--- a/platforms/camel-catalog-maven/pom.xml
+++ b/platforms/camel-catalog-maven/pom.xml
@@ -58,6 +58,13 @@
       <version>${ivy-version}</version>
     </dependency>
 
+    <!-- use http client 3.x for downloading as its better than the JDK client -->
+    <dependency>
+      <groupId>commons-httpclient</groupId>
+      <artifactId>commons-httpclient</artifactId>
+      <version>${httpclient-version}</version>
+    </dependency>
+
     <!-- testing -->
     <dependency>
       <groupId>junit</groupId>

http://git-wip-us.apache.org/repos/asf/camel/blob/1e3afa58/platforms/camel-catalog-maven/src/main/java/org/apache/camel/catalog/maven/MavenVersionManager.java
----------------------------------------------------------------------
diff --git a/platforms/camel-catalog-maven/src/main/java/org/apache/camel/catalog/maven/MavenVersionManager.java b/platforms/camel-catalog-maven/src/main/java/org/apache/camel/catalog/maven/MavenVersionManager.java
index 066b7ca..d9cfa1a 100644
--- a/platforms/camel-catalog-maven/src/main/java/org/apache/camel/catalog/maven/MavenVersionManager.java
+++ b/platforms/camel-catalog-maven/src/main/java/org/apache/camel/catalog/maven/MavenVersionManager.java
@@ -26,6 +26,7 @@ import java.util.Map;
 import groovy.grape.Grape;
 import groovy.lang.GroovyClassLoader;
 import org.apache.camel.catalog.VersionManager;
+import org.apache.ivy.util.url.URLHandlerRegistry;
 
 /**
  * A {@link VersionManager} that can load the resources using Maven to download needed artifacts from
@@ -36,6 +37,7 @@ import org.apache.camel.catalog.VersionManager;
 public class MavenVersionManager implements VersionManager {
 
     private final ClassLoader classLoader = new GroovyClassLoader();
+    private final PatchedHttpClientHandler httpClient = new PatchedHttpClientHandler();
     private String version;
     private String runtimeProviderVersion;
     private String cacheDirectory;
@@ -61,6 +63,15 @@ public class MavenVersionManager implements VersionManager {
     }
 
     /**
+     * Sets the timeout in millis (http.socket.timeout) when downloading via http/https protocols.
+     * <p/>
+     * The default value is 10000
+     */
+    public void setHttpClientTimeout(int timeout) {
+        httpClient.setTimeout(timeout);
+    }
+
+    /**
      * To add a 3rd party Maven repository.
      *
      * @param name the repository name
@@ -81,6 +92,8 @@ public class MavenVersionManager implements VersionManager {
     @Override
     public boolean loadVersion(String version) {
         try {
+            URLHandlerRegistry.setDefault(httpClient);
+
             if (cacheDirectory != null) {
                 System.setProperty("grape.root", cacheDirectory);
             }
@@ -113,6 +126,8 @@ public class MavenVersionManager implements VersionManager {
     @Override
     public boolean loadRuntimeProviderVersion(String groupId, String artifactId, String version) {
         try {
+            URLHandlerRegistry.setDefault(httpClient);
+
             Grape.setEnableAutoDownload(true);
 
             Map<String, Object> param = new HashMap<>();

http://git-wip-us.apache.org/repos/asf/camel/blob/1e3afa58/platforms/camel-catalog-maven/src/main/java/org/apache/camel/catalog/maven/PatchedHttpClientHandler.java
----------------------------------------------------------------------
diff --git a/platforms/camel-catalog-maven/src/main/java/org/apache/camel/catalog/maven/PatchedHttpClientHandler.java b/platforms/camel-catalog-maven/src/main/java/org/apache/camel/catalog/maven/PatchedHttpClientHandler.java
new file mode 100644
index 0000000..66a26f4
--- /dev/null
+++ b/platforms/camel-catalog-maven/src/main/java/org/apache/camel/catalog/maven/PatchedHttpClientHandler.java
@@ -0,0 +1,72 @@
+/**
+ * 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
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
+ * 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.catalog.maven;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+
+import org.apache.ivy.util.url.BasicURLHandler;
+import org.apache.ivy.util.url.HttpClientHandler;
+
+/**
+ * A patched {@link HttpClientHandler} which allows to use HttpClient for downloading via http/https
+ * and have support for timeouts which is not supported out of the box by default.
+ */
+public class PatchedHttpClientHandler extends HttpClientHandler {
+
+    // use basic handler for non http/https as it can load from jar/file etc
+    private BasicURLHandler basic = new BasicURLHandler();
+
+    private int timeout = 10000;
+
+    public int getTimeout() {
+        return timeout;
+    }
+
+    /**
+     * Sets the timeout in millis (http.socket.timeout) when downloading via http/https protocols.
+     * <p/>
+     * The default value is 10000
+     */
+    public void setTimeout(int timeout) {
+        this.timeout = timeout;
+    }
+
+    @Override
+    public URLInfo getURLInfo(URL url) {
+        // ensure we always use a timeout
+        String protocol = url.getProtocol();
+        if ("http".equals(protocol) || "https".equals(protocol)) {
+            return super.getURLInfo(url, timeout);
+        } else {
+            // use basic for non http
+            return basic.getURLInfo(url, timeout);
+        }
+    }
+
+    @Override
+    public InputStream openStream(URL url) throws IOException {
+        String protocol = url.getProtocol();
+        if ("http".equals(protocol) || "https".equals(protocol)) {
+            return super.openStream(url);
+        } else {
+            // use basic for non http
+            return basic.openStream(url);
+        }
+    }
+}


[3/3] camel git commit: Polished test

Posted by da...@apache.org.
Polished test


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/26085bb4
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/26085bb4
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/26085bb4

Branch: refs/heads/camel-2.19.x
Commit: 26085bb4b30a586b47310e281ab8da2c6c227df9
Parents: 1e3afa5
Author: Claus Ibsen <da...@apache.org>
Authored: Tue Jul 4 10:43:55 2017 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Tue Jul 4 10:51:05 2017 +0200

----------------------------------------------------------------------
 .../camel/catalog/maven/MavenVersionManagerTest.java      | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/26085bb4/platforms/camel-catalog-maven/src/test/java/org/apache/camel/catalog/maven/MavenVersionManagerTest.java
----------------------------------------------------------------------
diff --git a/platforms/camel-catalog-maven/src/test/java/org/apache/camel/catalog/maven/MavenVersionManagerTest.java b/platforms/camel-catalog-maven/src/test/java/org/apache/camel/catalog/maven/MavenVersionManagerTest.java
index e9cdcb0..bf5fe2f 100644
--- a/platforms/camel-catalog-maven/src/test/java/org/apache/camel/catalog/maven/MavenVersionManagerTest.java
+++ b/platforms/camel-catalog-maven/src/test/java/org/apache/camel/catalog/maven/MavenVersionManagerTest.java
@@ -156,13 +156,13 @@ public class MavenVersionManagerTest extends TestCase {
         System.out.println("2.18.1 has " + components + " components");
         assertFalse("Should not have ejb component", catalog.findComponentNames().contains("ejb"));
 
-        loaded = catalog.loadVersion("2.19.0-SNAPSHOT");
-        assertTrue("Unable to switch to Camel Catalog 2.19.0-SNAPSHOT", loaded);
-        loaded = catalog.loadRuntimeProviderVersion("org.apache.camel", "camel-catalog-provider-karaf", "2.19.0-SNAPSHOT");
-        assertTrue("Unable to load Karaf Provider Camel Catalog 2.19.0-SNAPSHOT", loaded);
+        loaded = catalog.loadVersion("2.19.1");
+        assertTrue("Unable to switch to Camel Catalog 2.19.1", loaded);
+        loaded = catalog.loadRuntimeProviderVersion("org.apache.camel", "camel-catalog-provider-karaf", "2.19.1");
+        assertTrue("Unable to load Karaf Provider Camel Catalog 2.19.1", loaded);
         int componentsNewer = catalog.findComponentNames().size();
         assertTrue("Both catalog versions shouldn't have the same count of components.", components != componentsNewer);
-        System.out.println("2.19.0-SNAPSHOT has " + componentsNewer + " components");
+        System.out.println("2.19.1 has " + componentsNewer + " components");
         assertFalse("Should not have ejb component", catalog.findComponentNames().contains("ejb"));
 
         loaded = catalog.loadVersion("2.18.1");