3232import java .util .ArrayList ;
3333import java .util .Collections ;
3434import java .util .HashMap ;
35+ import java .util .HashSet ;
3536import java .util .List ;
3637import java .util .Map ;
38+ import java .util .Set ;
3739
3840public class AccessTransformerList {
3941 private static final Logger LOGGER = LogManager .getLogger ("AXFORM" );
4042 private static final Marker AXFORM_MARKER = MarkerManager .getMarker ("AXFORM" );
4143 private final Map <Target <?>, AccessTransformer > accessTransformers = new HashMap <>();
44+ private final Set <Type > validAtTypes = new HashSet <>();
45+ private final Renamer renamer = new Renamer ();
4246 private INameHandler nameHandler = new IdentityNameHandler ();
43- private Renamer renamer = new Renamer ();
4447
4548 public void loadFromResource (String resourceName ) throws URISyntaxException , IOException {
4649 final Path path = Paths .get (getClass ().getClassLoader ().getResource (resourceName ).toURI ());
@@ -99,11 +102,7 @@ public void load(Path path, String resourceName, List<String> lines) {
99102 int idx = name .indexOf ('(' );
100103 String desc = name .substring (idx ).replace ('.' , '/' );
101104 name = name .substring (0 , idx );
102- try {
103105 target = new MethodTarget (renamer .map (cls ), renamer .mapMethodName (cls , name , desc ), renamer .mapMethodDesc (desc ));
104- } catch (Throwable t ) {
105- throw t ;
106- }
107106 }
108107 ats .add (new AccessTransformer (target , mod , fmod , resourceName , lineIndex ));
109108 }
@@ -120,6 +119,8 @@ public void load(Path path, String resourceName, List<String> lines) {
120119 }
121120 this .accessTransformers .clear ();
122121 this .accessTransformers .putAll (localATCopy );
122+ for (AccessTransformer newAT : ats )
123+ this .validAtTypes .add (newAT .getTarget ().getASMType ());
123124 LOGGER .debug (AXFORM_MARKER ,"Loaded access transformer {} from path {}" , resourceName , path );
124125 }
125126
@@ -185,7 +186,7 @@ public Map<String, List<AccessTransformer>> getAccessTransformers() {
185186 }
186187
187188 public boolean containsClassTarget (Type type ) {
188- return accessTransformers . keySet (). stream (). anyMatch ( k -> type . equals ( k . getASMType ()) );
189+ return this . validAtTypes . contains ( type );
189190 }
190191
191192 public Map <TargetType , Map <String , AccessTransformer >> getTransformersForTarget (Type type ) {
@@ -204,7 +205,7 @@ public void setNameHandler(final INameHandler nameHandler) {
204205 LOGGER .debug (AXFORM_MARKER , "Set name handler {}" , nameHandler );
205206 }
206207
207- private class Renamer extends Remapper {
208+ private final class Renamer extends Remapper {
208209 @ Override
209210 public String map (String internalName ) {
210211 return AccessTransformerList .this .nameHandler .translateClassName (internalName );
0 commit comments