blob: 269d31e15f7fa2c7148dd6cb6753d239ff52f987 (
plain) (
blame)
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
|
package cuchaz.enigma;
import com.strobel.assembler.metadata.ITypeLoader;
import com.strobel.assembler.metadata.MetadataSystem;
import com.strobel.assembler.metadata.TypeDefinition;
import com.strobel.assembler.metadata.TypeReference;
import java.util.Collections;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
public final class NoRetryMetadataSystem extends MetadataSystem {
private final Set<String> failedTypes = Collections.newSetFromMap(new ConcurrentHashMap<>());
public NoRetryMetadataSystem(final ITypeLoader typeLoader) {
super(typeLoader);
}
@Override
protected synchronized TypeDefinition resolveType(final String descriptor, final boolean mightBePrimitive) {
if (failedTypes.contains(descriptor)) {
return null;
}
final TypeDefinition result = super.resolveType(descriptor, mightBePrimitive);
if (result == null) {
failedTypes.add(descriptor);
}
return result;
}
@Override
public synchronized TypeDefinition resolve(final TypeReference type) {
return super.resolve(type);
}
}
|