ObjectGraph.java
9.99 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
package dagger;
import dagger.internal.Binding;
import dagger.internal.BindingsGroup;
import dagger.internal.FailoverLoader;
import dagger.internal.Keys;
import dagger.internal.Linker;
import dagger.internal.Loader;
import dagger.internal.ModuleAdapter;
import dagger.internal.Modules;
import dagger.internal.ProblemDetector;
import dagger.internal.SetBinding;
import dagger.internal.StaticInjection;
import dagger.internal.ThrowingErrorHandler;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
public abstract class ObjectGraph
{
public static ObjectGraph create(Object... paramVarArgs)
{
return DaggerObjectGraph.makeGraph(null, new FailoverLoader(), paramVarArgs);
}
static ObjectGraph createWith(Loader paramLoader, Object... paramVarArgs)
{
return DaggerObjectGraph.makeGraph(null, paramLoader, paramVarArgs);
}
public abstract <T> T get(Class<T> paramClass);
public abstract <T> T inject(T paramT);
public abstract void injectStatics();
public abstract ObjectGraph plus(Object... paramVarArgs);
public abstract void validate();
static class DaggerObjectGraph
extends ObjectGraph
{
private final DaggerObjectGraph base;
private final Map<String, Class<?>> injectableTypes;
private final Linker linker;
private final Loader plugin;
private final List<SetBinding<?>> setBindings;
private final Map<Class<?>, StaticInjection> staticInjections;
DaggerObjectGraph(DaggerObjectGraph paramDaggerObjectGraph, Linker paramLinker, Loader paramLoader, Map<Class<?>, StaticInjection> paramMap, Map<String, Class<?>> paramMap1, List<SetBinding<?>> paramList)
{
this.base = paramDaggerObjectGraph;
this.linker = ((Linker)checkNotNull(paramLinker, "linker"));
this.plugin = ((Loader)checkNotNull(paramLoader, "plugin"));
this.staticInjections = ((Map)checkNotNull(paramMap, "staticInjections"));
this.injectableTypes = ((Map)checkNotNull(paramMap1, "injectableTypes"));
this.setBindings = ((List)checkNotNull(paramList, "setBindings"));
}
private static <T> T checkNotNull(T paramT, String paramString)
{
if (paramT == null) {
throw new NullPointerException(paramString);
}
return paramT;
}
private Binding<?> getInjectableTypeBinding(ClassLoader paramClassLoader, String paramString1, String paramString2)
{
Class localClass = null;
for (Object localObject = this; localObject != null; localObject = ((DaggerObjectGraph)localObject).base)
{
localClass = (Class)((DaggerObjectGraph)localObject).injectableTypes.get(paramString1);
if (localClass != null) {
break;
}
}
if (localClass == null) {
throw new IllegalArgumentException("No inject registered for " + paramString1 + ". You must explicitly add it to the 'injects' option in one of your modules.");
}
synchronized (this.linker)
{
localObject = this.linker.requestBinding(paramString2, localClass, paramClassLoader, false, true);
if (localObject != null)
{
paramString1 = (String)localObject;
if (((Binding)localObject).isLinked()) {}
}
else
{
this.linker.linkRequested();
paramString1 = this.linker.requestBinding(paramString2, localClass, paramClassLoader, false, true);
}
return paramString1;
}
}
private Map<String, Binding<?>> linkEverything()
{
??? = this.linker.fullyLinkedBindings();
if (??? != null) {
return (Map<String, Binding<?>>)???;
}
synchronized (this.linker)
{
Map localMap1 = this.linker.fullyLinkedBindings();
if (localMap1 != null) {
return localMap1;
}
}
linkStaticInjections();
linkInjectableTypes();
Map localMap2 = this.linker.linkAll();
return localMap2;
}
private void linkInjectableTypes()
{
Iterator localIterator = this.injectableTypes.entrySet().iterator();
while (localIterator.hasNext())
{
Map.Entry localEntry = (Map.Entry)localIterator.next();
this.linker.requestBinding((String)localEntry.getKey(), localEntry.getValue(), ((Class)localEntry.getValue()).getClassLoader(), false, true);
}
}
private void linkStaticInjections()
{
Iterator localIterator = this.staticInjections.entrySet().iterator();
while (localIterator.hasNext())
{
Map.Entry localEntry = (Map.Entry)localIterator.next();
StaticInjection localStaticInjection2 = (StaticInjection)localEntry.getValue();
StaticInjection localStaticInjection1 = localStaticInjection2;
if (localStaticInjection2 == null)
{
localStaticInjection1 = this.plugin.getStaticInjection((Class)localEntry.getKey());
localEntry.setValue(localStaticInjection1);
}
localStaticInjection1.attach(this.linker);
}
}
private static ObjectGraph makeGraph(DaggerObjectGraph paramDaggerObjectGraph, Loader paramLoader, Object... paramVarArgs)
{
LinkedHashMap localLinkedHashMap1 = new LinkedHashMap();
LinkedHashMap localLinkedHashMap2 = new LinkedHashMap();
if (paramDaggerObjectGraph == null) {}
ObjectGraph.OverridesBindings localOverridesBindings;
Map.Entry localEntry;
ModuleAdapter localModuleAdapter;
for (ObjectGraph.StandardBindings localStandardBindings = new ObjectGraph.StandardBindings();; localStandardBindings = new ObjectGraph.StandardBindings(paramDaggerObjectGraph.setBindings))
{
localOverridesBindings = new ObjectGraph.OverridesBindings();
Iterator localIterator = Modules.loadModules(paramLoader, paramVarArgs).entrySet().iterator();
if (!localIterator.hasNext()) {
break label257;
}
localEntry = (Map.Entry)localIterator.next();
localModuleAdapter = (ModuleAdapter)localEntry.getKey();
i = 0;
while (i < localModuleAdapter.injectableTypes.length)
{
localLinkedHashMap1.put(localModuleAdapter.injectableTypes[i], localModuleAdapter.moduleClass);
i += 1;
}
}
int i = 0;
while (i < localModuleAdapter.staticInjections.length)
{
localLinkedHashMap2.put(localModuleAdapter.staticInjections[i], null);
i += 1;
}
for (;;)
{
try
{
if (localModuleAdapter.overrides)
{
paramVarArgs = localOverridesBindings;
localModuleAdapter.getBindings(paramVarArgs, localEntry.getValue());
}
}
catch (IllegalArgumentException paramDaggerObjectGraph)
{
throw new IllegalArgumentException(localModuleAdapter.moduleClass.getSimpleName() + ": " + paramDaggerObjectGraph.getMessage(), paramDaggerObjectGraph);
}
paramVarArgs = localStandardBindings;
}
label257:
if (paramDaggerObjectGraph != null) {}
for (paramVarArgs = paramDaggerObjectGraph.linker;; paramVarArgs = null)
{
paramVarArgs = new Linker(paramVarArgs, paramLoader, new ThrowingErrorHandler());
paramVarArgs.installBindings(localStandardBindings);
paramVarArgs.installBindings(localOverridesBindings);
return new DaggerObjectGraph(paramDaggerObjectGraph, paramVarArgs, paramLoader, localLinkedHashMap2, localLinkedHashMap1, ObjectGraph.StandardBindings.access$100(localStandardBindings));
}
}
public <T> T get(Class<T> paramClass)
{
String str2 = Keys.get(paramClass);
if (paramClass.isInterface()) {}
for (String str1 = str2;; str1 = Keys.getMembersKey(paramClass)) {
return (T)getInjectableTypeBinding(paramClass.getClassLoader(), str1, str2).get();
}
}
public <T> T inject(T paramT)
{
String str = Keys.getMembersKey(paramT.getClass());
getInjectableTypeBinding(paramT.getClass().getClassLoader(), str, str).injectMembers(paramT);
return paramT;
}
public void injectStatics()
{
synchronized (this.linker)
{
linkStaticInjections();
this.linker.linkRequested();
linkStaticInjections();
??? = this.staticInjections.entrySet().iterator();
if (((Iterator)???).hasNext()) {
((StaticInjection)((Map.Entry)((Iterator)???).next()).getValue()).inject();
}
}
}
public ObjectGraph plus(Object... paramVarArgs)
{
linkEverything();
return makeGraph(this, this.plugin, paramVarArgs);
}
public void validate()
{
Map localMap = linkEverything();
new ProblemDetector().detectProblems(localMap.values());
}
}
static final class OverridesBindings
extends BindingsGroup
{
public final Binding<?> contributeSetBinding(String paramString, SetBinding<?> paramSetBinding)
{
throw new IllegalArgumentException("Module overrides cannot contribute set bindings.");
}
}
static final class StandardBindings
extends BindingsGroup
{
private final List<SetBinding<?>> setBindings;
public StandardBindings()
{
this.setBindings = new ArrayList();
}
public StandardBindings(List<SetBinding<?>> paramList)
{
this.setBindings = new ArrayList(paramList.size());
paramList = paramList.iterator();
while (paramList.hasNext())
{
SetBinding localSetBinding = new SetBinding((SetBinding)paramList.next());
this.setBindings.add(localSetBinding);
put(localSetBinding.provideKey, localSetBinding);
}
}
public final Binding<?> contributeSetBinding(String paramString, SetBinding<?> paramSetBinding)
{
this.setBindings.add(paramSetBinding);
return super.put(paramString, paramSetBinding);
}
}
}
/* Location: /home/merong/decompile/hackery-dex2jar.jar!/dagger/ObjectGraph.class
* Java compiler version: 6 (50.0)
* JD-Core Version: 0.7.1
*/