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 2016/05/05 07:21:43 UTC

[1/2] camel git commit: CAMEL-9273: Use http client for camel-weather. Thanks to Arno Noordover for the patch.

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 <da...@apache.org>
Authored: Thu May 5 09:19:47 2016 +0200
Committer: Claus Ibsen <da...@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");
     }


[2/2] camel git commit: CAMEL-9273: Use http client for camel-weather. Thanks to Arno Noordover for the patch.

Posted by da...@apache.org.
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/9937c619
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/9937c619
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/9937c619

Branch: refs/heads/master
Commit: 9937c6194deeccac49d1704aa200dfc5f261833b
Parents: 2219cc9
Author: Claus Ibsen <da...@apache.org>
Authored: Thu May 5 09:21:29 2016 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Thu May 5 09:21:29 2016 +0200

----------------------------------------------------------------------
 platforms/karaf/features/src/main/resources/features.xml | 3 +++
 1 file changed, 3 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/9937c619/platforms/karaf/features/src/main/resources/features.xml
----------------------------------------------------------------------
diff --git a/platforms/karaf/features/src/main/resources/features.xml b/platforms/karaf/features/src/main/resources/features.xml
index da87ecc..632a9ab 100644
--- a/platforms/karaf/features/src/main/resources/features.xml
+++ b/platforms/karaf/features/src/main/resources/features.xml
@@ -1754,6 +1754,9 @@
   </feature>
   <feature name='camel-weather' version='${project.version}' resolver='(obr)' start-level='50'>
     <feature version='${project.version}'>camel-core</feature>
+    <bundle dependency='true'>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.commons-httpclient/${commons-httpclient-bundle-version}</bundle>
+    <bundle dependency='true'>mvn:commons-codec/commons-codec/${commons-codec-version}</bundle>
+    <bundle dependency='true'>mvn:javax.servlet/javax.servlet-api/${javax.servlet-api-version}</bundle>
     <bundle dependency='true'>mvn:org.codehaus.jackson/jackson-core-asl/${jackson-version}</bundle>
     <bundle dependency='true'>mvn:org.codehaus.jackson/jackson-mapper-asl/${jackson-version}</bundle>
     <bundle>mvn:org.apache.camel/camel-weather/${project.version}</bundle>