* Remove overriding of retry handler.
Setting the retry handler to DEFAULT overrides the retry configuration,
making it impossible to specify a default configuration. It seems to be
unnecessary since allowing LoadBalancerContext to initialize it in
initWithNiwsConfig appears to be sufficient for the case where there is
no global configuration too.
* Match previous retry behaviour, and add tests.
The cause of the fallback is now logged by default to FINE level. You can programmatically inspect
the cause by making your own `FallbackFactory`. In many cases, the cause will be a `FeignException`,
which includes the http status.
Here's an example of using `FallbackFactory`:
```java
// This instance will be invoked if there are errors of any kind.
FallbackFactory<GitHub> fallbackFactory = cause -> (owner, repo) -> {
if (cause instanceof FeignException && ((FeignException) cause).status() == 403) {
return Collections.emptyList();
} else {
return Arrays.asList("yogi");
}
};
GitHub github = HystrixFeign.builder()
...
.target(GitHub.class, "https://api.github.com", fallbackFactory);
```
This exposes means to customize group and command keys, for example to
use non-default conventions from configuration or custom annotation
processing.
Ex.
```java
SetterFactory commandKeyIsRequestLine = (target, method) -> {
String groupKey = target.name();
String commandKey = method.getAnnotation(RequestLine.class).value();
return HystrixCommand.Setter
.withGroupKey(HystrixCommandGroupKey.Factory.asKey(groupKey))
.andCommandKey(HystrixCommandKey.Factory.asKey(commandKey));
};
api = HystrixFeign.builder()
.setterFactory(commandKeyIsRequestLine)
...
```
This also makes the default's more unique to avoid clashing in Hystrix's
cache.
Before, `LoadBalancingTarget` stripped out the path and only used
`URI.getScheme()` and `URI.getHost()` to generate the `Request`.
Now, it will add `URI.getPath()` to the `Request` as well; this is
useful if you want to interact with endpoints with a context-path.
Update README.md Travis CI to point to correct git repository
* Add support for expansion of @Param lists
The existing support for expanders in method parameters is
limited to converting a single value. The change applies the
expander individually to each item in a collection or array,
thus making it useful for multi-valued query parameters, for
instance. The old behaviour is preserved because no existing
expanders would have been converting collections to strings
(probably).
* Change Collection to Iterable and add tests
* Add test for null conversion to empty string as well
* Remove array handling and null handling