|
16 | 16 | package feign; |
17 | 17 |
|
18 | 18 |
|
19 | | -import dagger.Module; |
20 | 19 | import dagger.ObjectGraph; |
21 | 20 | import dagger.Provides; |
22 | 21 | import feign.Logger.NoOpLogger; |
@@ -86,61 +85,43 @@ public static ObjectGraph createObjectGraph(Object... modules) { |
86 | 85 | } |
87 | 86 |
|
88 | 87 | @SuppressWarnings("rawtypes") |
89 | | - @dagger.Module(complete = false, injects = {Feign.class, Builder.class}, |
90 | | - includes = {Defaults.WithoutCodec.class, Defaults.Codec.class}, library = true) |
| 88 | + // incomplete as missing Encoder/Decoder |
| 89 | + @dagger.Module(injects = {Feign.class, Builder.class}, complete = false, includes = ReflectiveFeign.Module.class) |
91 | 90 | public static class Defaults { |
| 91 | + @Provides Contract contract() { |
| 92 | + return new Contract.Default(); |
| 93 | + } |
92 | 94 |
|
93 | | - @dagger.Module(includes = {Defaults.Client.class}, library = true) |
94 | | - public static class WithoutCodec { |
95 | | - @Provides Contract contract() { |
96 | | - return new Contract.Default(); |
97 | | - } |
98 | | - |
99 | | - @Provides Logger.Level logLevel() { |
100 | | - return Logger.Level.NONE; |
101 | | - } |
102 | | - |
103 | | - @Provides Logger noOp() { |
104 | | - return new NoOpLogger(); |
105 | | - } |
106 | | - |
107 | | - @Provides Retryer retryer() { |
108 | | - return new Retryer.Default(); |
109 | | - } |
| 95 | + @Provides Logger.Level logLevel() { |
| 96 | + return Logger.Level.NONE; |
| 97 | + } |
110 | 98 |
|
111 | | - @Provides ErrorDecoder errorDecoder() { |
112 | | - return new ErrorDecoder.Default(); |
113 | | - } |
| 99 | + @Provides Logger noOp() { |
| 100 | + return new NoOpLogger(); |
114 | 101 | } |
115 | 102 |
|
116 | | - @dagger.Module(library = true) |
117 | | - public static class Client { |
118 | | - @Provides SSLSocketFactory sslSocketFactory() { |
119 | | - return SSLSocketFactory.class.cast(SSLSocketFactory.getDefault()); |
120 | | - } |
| 103 | + @Provides Retryer retryer() { |
| 104 | + return new Retryer.Default(); |
| 105 | + } |
121 | 106 |
|
122 | | - @Provides HostnameVerifier hostnameVerifier() { |
123 | | - return HttpsURLConnection.getDefaultHostnameVerifier(); |
124 | | - } |
| 107 | + @Provides ErrorDecoder errorDecoder() { |
| 108 | + return new ErrorDecoder.Default(); |
| 109 | + } |
125 | 110 |
|
126 | | - @Provides feign.Client httpClient(feign.Client.Default client) { |
127 | | - return client; |
128 | | - } |
| 111 | + @Provides Options options() { |
| 112 | + return new Options(); |
| 113 | + } |
129 | 114 |
|
130 | | - @Provides Options options() { |
131 | | - return new Options(); |
132 | | - } |
| 115 | + @Provides SSLSocketFactory sslSocketFactory() { |
| 116 | + return SSLSocketFactory.class.cast(SSLSocketFactory.getDefault()); |
133 | 117 | } |
134 | 118 |
|
135 | | - @dagger.Module(library = true) |
136 | | - public static class Codec { |
137 | | - @Provides Encoder defaultEncoder() { |
138 | | - return new Encoder.Default(); |
139 | | - } |
| 119 | + @Provides HostnameVerifier hostnameVerifier() { |
| 120 | + return HttpsURLConnection.getDefaultHostnameVerifier(); |
| 121 | + } |
140 | 122 |
|
141 | | - @Provides Decoder defaultDecoder() { |
142 | | - return new Decoder.Default(); |
143 | | - } |
| 123 | + @Provides feign.Client httpClient(feign.Client.Default client) { |
| 124 | + return client; |
144 | 125 | } |
145 | 126 | } |
146 | 127 |
|
@@ -176,24 +157,24 @@ public static String configKey(Method method) { |
176 | 157 | } |
177 | 158 |
|
178 | 159 | private static List<Object> modulesForGraph(Object... modules) { |
179 | | - List<Object> modulesForGraph = new ArrayList<Object>(3); |
| 160 | + List<Object> modulesForGraph = new ArrayList<Object>(2); |
180 | 161 | modulesForGraph.add(new Defaults()); |
181 | | - modulesForGraph.add(new ReflectiveFeign.Module()); |
182 | 162 | if (modules != null) |
183 | 163 | for (Object module : modules) |
184 | 164 | modulesForGraph.add(module); |
185 | 165 | return modulesForGraph; |
186 | 166 | } |
187 | 167 |
|
| 168 | + @dagger.Module(injects = Feign.class, includes = ReflectiveFeign.Module.class) |
188 | 169 | public static class Builder { |
189 | 170 | private final Set<RequestInterceptor> requestInterceptors = new LinkedHashSet<RequestInterceptor>(); |
190 | 171 | @Inject Logger.Level logLevel; |
191 | 172 | @Inject Contract contract; |
192 | 173 | @Inject Client client; |
193 | 174 | @Inject Retryer retryer; |
194 | 175 | @Inject Logger logger; |
195 | | - @Inject Encoder encoder; |
196 | | - @Inject Decoder decoder; |
| 176 | + Encoder encoder = new Encoder.Default(); |
| 177 | + Decoder decoder = new Decoder.Default(); |
197 | 178 | @Inject ErrorDecoder errorDecoder; |
198 | 179 | @Inject Options options; |
199 | 180 |
|
@@ -270,35 +251,7 @@ public <T> T target(Class<T> apiType, String url) { |
270 | 251 | } |
271 | 252 |
|
272 | 253 | public <T> T target(Target<T> target) { |
273 | | - BuilderModule module = new BuilderModule(this); |
274 | | - return create(module).newInstance(target); |
275 | | - } |
276 | | - } |
277 | | - |
278 | | - @Module(library = true, overrides = true, addsTo = Defaults.class) |
279 | | - static class BuilderModule { |
280 | | - private final Logger.Level logLevel; |
281 | | - private final Contract contract; |
282 | | - private final Client client; |
283 | | - private final Retryer retryer; |
284 | | - private final Logger logger; |
285 | | - private final Encoder encoder; |
286 | | - private final Decoder decoder; |
287 | | - private final ErrorDecoder errorDecoder; |
288 | | - private final Options options; |
289 | | - private final Set<RequestInterceptor> requestInterceptors; |
290 | | - |
291 | | - BuilderModule(Builder builder) { |
292 | | - this.logLevel = builder.logLevel; |
293 | | - this.contract = builder.contract; |
294 | | - this.client = builder.client; |
295 | | - this.retryer = builder.retryer; |
296 | | - this.logger = builder.logger; |
297 | | - this.encoder = builder.encoder; |
298 | | - this.decoder = builder.decoder; |
299 | | - this.errorDecoder = builder.errorDecoder; |
300 | | - this.options = builder.options; |
301 | | - this.requestInterceptors = builder.requestInterceptors; |
| 254 | + return ObjectGraph.create(this).get(Feign.class).newInstance(target); |
302 | 255 | } |
303 | 256 |
|
304 | 257 | @Provides Logger.Level logLevel() { |
|
0 commit comments