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>