Repository: camel
Updated Branches:
  refs/heads/master b3783a536 -> 9937c6194


CAMEL-9273: Use http client for camel-weather. Thanks to Arno Noordover for the 
patch.


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

Branch: refs/heads/master
Commit: 2219cc96fb49e26d2fe85d0e096259fde8e0d2e8
Parents: b3783a5
Author: Claus Ibsen <davscl...@apache.org>
Authored: Thu May 5 09:19:47 2016 +0200
Committer: Claus Ibsen <davscl...@apache.org>
Committed: Thu May 5 09:19:47 2016 +0200

----------------------------------------------------------------------
 components/camel-weather/pom.xml                |  4 ++
 .../component/weather/WeatherConsumer.java      | 47 +++++++++++++-------
 .../component/weather/WeatherProducer.java      | 39 ++++++++++------
 .../weather/CurrentWeatherConsumerXmlTest.java  |  1 -
 4 files changed, 59 insertions(+), 32 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/2219cc96/components/camel-weather/pom.xml
----------------------------------------------------------------------
diff --git a/components/camel-weather/pom.xml b/components/camel-weather/pom.xml
index 5c4150d..e35ac46 100644
--- a/components/camel-weather/pom.xml
+++ b/components/camel-weather/pom.xml
@@ -36,6 +36,10 @@
 
   <dependencies>
     <dependency>
+      <groupId>commons-httpclient</groupId>
+      <artifactId>commons-httpclient</artifactId>
+    </dependency>
+    <dependency>
       <groupId>org.apache.camel</groupId>
       <artifactId>camel-core</artifactId>
     </dependency>

http://git-wip-us.apache.org/repos/asf/camel/blob/2219cc96/components/camel-weather/src/main/java/org/apache/camel/component/weather/WeatherConsumer.java
----------------------------------------------------------------------
diff --git 
a/components/camel-weather/src/main/java/org/apache/camel/component/weather/WeatherConsumer.java
 
b/components/camel-weather/src/main/java/org/apache/camel/component/weather/WeatherConsumer.java
index 8469e79..591f86d 100644
--- 
a/components/camel-weather/src/main/java/org/apache/camel/component/weather/WeatherConsumer.java
+++ 
b/components/camel-weather/src/main/java/org/apache/camel/component/weather/WeatherConsumer.java
@@ -16,12 +16,13 @@
  */
 package org.apache.camel.component.weather;
 
-import java.net.URL;
-
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
 import org.apache.camel.impl.ScheduledPollConsumer;
 import org.apache.camel.util.ObjectHelper;
+import org.apache.commons.httpclient.HttpClient;
+import org.apache.commons.httpclient.HttpStatus;
+import org.apache.commons.httpclient.methods.GetMethod;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -43,23 +44,35 @@ public class WeatherConsumer extends ScheduledPollConsumer {
     @Override
     protected int poll() throws Exception {
         LOG.debug("Going to execute the Weather query {}", query);
-        String weather = 
getEndpoint().getCamelContext().getTypeConverter().mandatoryConvertTo(String.class,
 new URL(query));
-        LOG.debug("Got back the Weather information {}", weather);
-        if (ObjectHelper.isEmpty(weather)) {
-            throw new IllegalStateException("Got the unexpected value '" + 
weather + "' as the result of the query '" + query + "'");
-        }
+        HttpClient httpClient = new HttpClient();
+        GetMethod getMethod = new GetMethod(query);
+        try {
+            int status = httpClient.executeMethod(getMethod);
+            if (status != HttpStatus.SC_OK) {
+                LOG.warn("HTTP call for weather returned error status code {} 
- {} as a result with query: {}", status, getMethod.getStatusLine(), query);
+                return 0;
+            }
+            String weather = 
getEndpoint().getCamelContext().getTypeConverter().mandatoryConvertTo(String.class,
 getMethod.getResponseBodyAsStream());
+            LOG.debug("Got back the Weather information {}", weather);
+            if (ObjectHelper.isEmpty(weather)) {
+                // empty response
+                return 0;
+            }
 
-        Exchange exchange = getEndpoint().createExchange();
-        String header = getEndpoint().getConfiguration().getHeaderName();
-        if (header != null) {
-            exchange.getIn().setHeader(header, weather);
-        } else {
-            exchange.getIn().setBody(weather);
-        }
-        exchange.getIn().setHeader(WeatherConstants.WEATHER_QUERY, query);
+            Exchange exchange = getEndpoint().createExchange();
+            String header = getEndpoint().getConfiguration().getHeaderName();
+            if (header != null) {
+                exchange.getIn().setHeader(header, weather);
+            } else {
+                exchange.getIn().setBody(weather);
+            }
+            exchange.getIn().setHeader(WeatherConstants.WEATHER_QUERY, query);
 
-        getProcessor().process(exchange);
+            getProcessor().process(exchange);
 
-        return 1;
+            return 1;
+        } finally {
+            getMethod.releaseConnection();
+        }
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/2219cc96/components/camel-weather/src/main/java/org/apache/camel/component/weather/WeatherProducer.java
----------------------------------------------------------------------
diff --git 
a/components/camel-weather/src/main/java/org/apache/camel/component/weather/WeatherProducer.java
 
b/components/camel-weather/src/main/java/org/apache/camel/component/weather/WeatherProducer.java
index 346ace6..65f9706 100644
--- 
a/components/camel-weather/src/main/java/org/apache/camel/component/weather/WeatherProducer.java
+++ 
b/components/camel-weather/src/main/java/org/apache/camel/component/weather/WeatherProducer.java
@@ -16,11 +16,12 @@
  */
 package org.apache.camel.component.weather;
 
-import java.net.URL;
-
 import org.apache.camel.Exchange;
 import org.apache.camel.impl.DefaultProducer;
 import org.apache.camel.util.ObjectHelper;
+import org.apache.commons.httpclient.HttpClient;
+import org.apache.commons.httpclient.HttpStatus;
+import org.apache.commons.httpclient.methods.GetMethod;
 
 public class WeatherProducer extends DefaultProducer {
 
@@ -44,20 +45,30 @@ public class WeatherProducer extends DefaultProducer {
             q = getEndpoint().getConfiguration().getQuery(location);
         }
 
-        log.debug("Going to execute the Weather query {}", q);
-        String weather = 
getEndpoint().getCamelContext().getTypeConverter().mandatoryConvertTo(String.class,
 new URL(q));
-        log.debug("Got back the Weather information {}", weather);
+        HttpClient httpClient = new HttpClient();
+        GetMethod method = new GetMethod(q);
+        try {
+            log.debug("Going to execute the Weather query {}", q);
+            int statusCode = httpClient.executeMethod(method);
+            if (statusCode != HttpStatus.SC_OK) {
+                throw new IllegalStateException("Got the invalid http status 
value '" + method.getStatusLine() + "' as the result of the query '" + query + 
"'");
+            }
+            String weather = 
getEndpoint().getCamelContext().getTypeConverter().mandatoryConvertTo(String.class,
 method.getResponseBodyAsStream());
+            log.debug("Got back the Weather information {}", weather);
 
-        if (ObjectHelper.isEmpty(weather)) {
-            throw new IllegalStateException("Got the unexpected value '" + 
weather + "' as the result of the query '" + q + "'");
-        }
+            if (ObjectHelper.isEmpty(weather)) {
+                throw new IllegalStateException("Got the unexpected value '" + 
weather + "' as the result of the query '" + q + "'");
+            }
 
-        String header = getEndpoint().getConfiguration().getHeaderName();
-        if (header != null) {
-            exchange.getIn().setHeader(header, weather);
-        } else {
-            exchange.getIn().setBody(weather);
+            String header = getEndpoint().getConfiguration().getHeaderName();
+            if (header != null) {
+                exchange.getIn().setHeader(header, weather);
+            } else {
+                exchange.getIn().setBody(weather);
+            }
+            exchange.getIn().setHeader(WeatherConstants.WEATHER_QUERY, q);
+        } finally {
+            method.releaseConnection();
         }
-        exchange.getIn().setHeader(WeatherConstants.WEATHER_QUERY, q);
     }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/2219cc96/components/camel-weather/src/test/java/org/apache/camel/component/weather/CurrentWeatherConsumerXmlTest.java
----------------------------------------------------------------------
diff --git 
a/components/camel-weather/src/test/java/org/apache/camel/component/weather/CurrentWeatherConsumerXmlTest.java
 
b/components/camel-weather/src/test/java/org/apache/camel/component/weather/CurrentWeatherConsumerXmlTest.java
index 8fd3be7..de54c63 100644
--- 
a/components/camel-weather/src/test/java/org/apache/camel/component/weather/CurrentWeatherConsumerXmlTest.java
+++ 
b/components/camel-weather/src/test/java/org/apache/camel/component/weather/CurrentWeatherConsumerXmlTest.java
@@ -24,7 +24,6 @@ public class CurrentWeatherConsumerXmlTest extends 
BaseWeatherConsumerTest {
     protected void checkWeatherContent(String weather) {
         log.debug("The weather in {} format is {}{}", new Object[] 
{WeatherMode.XML, LS, weather});
 
-        assertStringContains(weather, "<?xml version=\"1.0\" 
encoding=\"utf-8\"?>");
         assertStringContains(weather, "<coord");
         assertStringContains(weather, "<temperature");
     }

Reply via email to