You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Thomas Diesler (Jira)" <ji...@apache.org> on 2020/07/07 14:09:00 UTC

[jira] [Updated] (CAMEL-15276) GeoLocationProvider may not get initialized properly

     [ https://issues.apache.org/jira/browse/CAMEL-15276?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Thomas Diesler updated CAMEL-15276:
-----------------------------------
    Fix Version/s: 3.4.1

> GeoLocationProvider may not get initialized properly
> ----------------------------------------------------
>
>                 Key: CAMEL-15276
>                 URL: https://issues.apache.org/jira/browse/CAMEL-15276
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-weather
>    Affects Versions: 3.4.0
>            Reporter: Thomas Diesler
>            Priority: Major
>             Fix For: 3.4.1
>
>
> WeatherConfiguration is constructed like this
> {code}
>     public WeatherConfiguration(WeatherComponent component) {
>         this.component = notNull(component, "component");
>         weatherQuery = new WeatherQuery(this);
>         FreeGeoIpGeoLocationProvider geoLocationProvider = new FreeGeoIpGeoLocationProvider(component, geolocationAccessKey);
>         weatherQuery.setGeoLocationProvider(geoLocationProvider);
>     }
> {code}
> at which point the geolocationAccessKey may be unknown.
> There is perhaps also some confusion here ...
> {code}
>     @Override
>     protected Endpoint createEndpoint(String uri, String remaining, Map<String, Object> parameters) throws Exception {
>         WeatherConfiguration configuration = new WeatherConfiguration(this);
>         configuration.setGeolocationAccessKey(geolocationAccessKey);
>         configuration.setGeolocationRequestHostIP(geolocationRequestHostIP);
>         WeatherEndpoint endpoint = new WeatherEndpoint(uri, this, configuration);
>         setProperties(endpoint, parameters);
>         if (httpClient == null) {
>             httpClient = HttpClients.createDefault();
>         }
>         return endpoint;
>     }
> {code}
> which seems to set the geolocationAccessKey on the configuration from what is explicitly defined on the component.
> A geolocationAccessKey defined on the endpoint Uri does not find its way to the GeoLocationProvider which is then used by WeatherQuery, which then leads to ...
> {code}
>             camelctx.addRoutes(new RouteBuilder() {
>                 @Override
>                 public void configure() throws Exception {
>                     from("weather:foo?geolocationRequestHostIP=redhat.com&geolocationAccessKey=" + GEOLOCATION_ACCESS_KEY + "&appid=" + OPENWEATHER_APP_ID)
>                     .to("mock:result");
>                 }
>             });
> {code}
> {code}
> Caused by: java.lang.IllegalStateException: The geolocation service requires a mandatory geolocationAccessKey
> 	at org.apache.camel.component.weather.geolocation.FreeGeoIpGeoLocationProvider.getCurrentGeoLocation(FreeGeoIpGeoLocationProvider.java:43)
> 	at org.apache.camel.component.weather.WeatherQuery.getCurrentGeoLocation(WeatherQuery.java:150)
> 	at org.apache.camel.component.weather.WeatherQuery.getQuery(WeatherQuery.java:58)
> 	at org.apache.camel.component.weather.WeatherQuery.getQuery(WeatherQuery.java:38)
> 	at org.apache.camel.component.weather.WeatherConfiguration.getQuery(WeatherConfiguration.java:212)
> 	at org.apache.camel.component.weather.WeatherEndpoint.createConsumer(WeatherEndpoint.java:43)
> {code}
>  



--
This message was sent by Atlassian Jira
(v8.3.4#803005)