Skip to content

Commit 449aea5

Browse files
author
adriancole
committed
Remove support for Observable methods.
1 parent 1af6fb3 commit 449aea5

18 files changed

Lines changed: 52 additions & 985 deletions

File tree

CHANGES.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
### Version 5.0
2+
* Remove support for Observable methods.
3+
14
### Version 4.4.1
25
* Fix NullPointerException on calling equals and hashCode.
36

core/src/main/java/feign/Contract.java

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -18,15 +18,13 @@
1818
import javax.inject.Named;
1919
import java.lang.annotation.Annotation;
2020
import java.lang.reflect.Method;
21-
import java.lang.reflect.Type;
2221
import java.net.URI;
2322
import java.util.ArrayList;
2423
import java.util.Collection;
2524
import java.util.List;
2625

2726
import static feign.Util.checkState;
2827
import static feign.Util.emptyToNull;
29-
import static feign.Util.resolveLastTypeParameter;
3028

3129
/**
3230
* Defines what annotations and values are valid on interfaces.
@@ -58,14 +56,6 @@ public MethodMetadata parseAndValidatateMetadata(Method method) {
5856
data.returnType(method.getGenericReturnType());
5957
data.configKey(Feign.configKey(method));
6058

61-
if (Observable.class.isAssignableFrom(method.getReturnType())) {
62-
Type context = method.getGenericReturnType();
63-
Type observableType = resolveLastTypeParameter(method.getGenericReturnType(), Observable.class);
64-
checkState(observableType != null, "Expected param %s to be Observable<X> or Observable<? super X> or a subtype",
65-
context, observableType);
66-
data.incrementalType(observableType);
67-
}
68-
6959
for (Annotation methodAnnotation : method.getAnnotations()) {
7060
processAnnotationOnMethod(data, methodAnnotation, method);
7161
}
@@ -83,8 +73,6 @@ public MethodMetadata parseAndValidatateMetadata(Method method) {
8373
if (parameterTypes[i] == URI.class) {
8474
data.urlIndex(i);
8575
} else if (!isHttpAnnotation) {
86-
checkState(!Observer.class.isAssignableFrom(parameterTypes[i]),
87-
"Please return Observer as opposed to passing an Observable arg: %s", method);
8876
checkState(data.formParams().isEmpty(), "Body parameters cannot be used with form parameters.");
8977
checkState(data.bodyIndex() == null, "Method has too many Body parameters: %s", method);
9078
data.bodyIndex(i);

core/src/main/java/feign/Feign.java

Lines changed: 3 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -16,34 +16,19 @@
1616
package feign;
1717

1818

19-
import dagger.Lazy;
2019
import dagger.ObjectGraph;
2120
import dagger.Provides;
2221
import feign.Logger.NoOpLogger;
2322
import feign.Request.Options;
2423
import feign.Target.HardCodedTarget;
25-
import feign.codec.Decoder;
26-
import feign.codec.Encoder;
2724
import feign.codec.ErrorDecoder;
28-
import feign.codec.IncrementalDecoder;
2925

30-
import javax.inject.Named;
31-
import javax.inject.Singleton;
3226
import javax.net.ssl.HostnameVerifier;
3327
import javax.net.ssl.HttpsURLConnection;
3428
import javax.net.ssl.SSLSocketFactory;
35-
import java.io.Closeable;
3629
import java.lang.reflect.Method;
3730
import java.util.ArrayList;
38-
import java.util.Collections;
3931
import java.util.List;
40-
import java.util.Set;
41-
import java.util.concurrent.Executor;
42-
import java.util.concurrent.ExecutorService;
43-
import java.util.concurrent.Executors;
44-
import java.util.concurrent.ThreadFactory;
45-
46-
import static java.lang.Thread.MIN_PRIORITY;
4732

4833
/**
4934
* Feign's purpose is to ease development against http apis that feign
@@ -52,7 +37,7 @@
5237
* In implementation, Feign is a {@link Feign#newInstance factory} for
5338
* generating {@link Target targeted} http apis.
5439
*/
55-
public abstract class Feign implements Closeable {
40+
public abstract class Feign {
5641

5742
/**
5843
* Returns a new instance of an HTTP API, defined by annotations in the
@@ -106,9 +91,8 @@ public static class Defaults {
10691
return SSLSocketFactory.class.cast(SSLSocketFactory.getDefault());
10792
}
10893

109-
@Provides
110-
HostnameVerifier hostnameVerifier() {
111-
return HttpsURLConnection.getDefaultHostnameVerifier();
94+
@Provides HostnameVerifier hostnameVerifier() {
95+
return HttpsURLConnection.getDefaultHostnameVerifier();
11296
}
11397

11498
@Provides Client httpClient(Client.Default client) {
@@ -130,22 +114,6 @@ HostnameVerifier hostnameVerifier() {
130114
@Provides Options options() {
131115
return new Options();
132116
}
133-
134-
/**
135-
* Used for both http invocation and decoding when observers are used.
136-
*/
137-
@Provides @Singleton @Named("http") Executor httpExecutor() {
138-
return Executors.newCachedThreadPool(new ThreadFactory() {
139-
@Override public Thread newThread(final Runnable r) {
140-
return new Thread(new Runnable() {
141-
@Override public void run() {
142-
Thread.currentThread().setPriority(MIN_PRIORITY);
143-
r.run();
144-
}
145-
}, MethodHandler.IDLE_THREAD_NAME);
146-
}
147-
});
148-
}
149117
}
150118

151119
/**
@@ -188,17 +156,4 @@ private static List<Object> modulesForGraph(Object... modules) {
188156
modulesForGraph.add(module);
189157
return modulesForGraph;
190158
}
191-
192-
private final Lazy<Executor> httpExecutor;
193-
194-
Feign(Lazy<Executor> httpExecutor) {
195-
this.httpExecutor = httpExecutor;
196-
}
197-
198-
@Override public void close() {
199-
Executor e = httpExecutor.get();
200-
if (e instanceof ExecutorService) {
201-
ExecutorService.class.cast(e).shutdownNow();
202-
}
203-
}
204159
}

0 commit comments

Comments
 (0)