55import org .mangorage .bootstrap .api .transformer .TransformerFlag ;
66
77import java .util .List ;
8- import java .util .Map ;
9- import java .util .concurrent .ConcurrentHashMap ;
108import java .util .concurrent .CopyOnWriteArrayList ;
11- import java .util .concurrent .atomic .AtomicReference ;
129
1310public final class ClassTransformers {
14- private final Map <String , Class <?>> classes = new ConcurrentHashMap <>();
11+
12+ private static final boolean DEBUG_CLASS_TRANSFORMING = Boolean .getBoolean ("DEBUG_CLASS_TRANSFORMING" );
13+
14+
1515 private final List <IClassTransformer > transformers = new CopyOnWriteArrayList <>();
1616
17- ClassTransformers () {}
1817
19- void add (String name , Class <?> clz ) {
20- classes .put (name , clz );
21- }
18+ ClassTransformers () {}
2219
2320 void add (IClassTransformer transformer ) {
2421 transformers .add (transformer );
2522 }
2623
27- boolean isEmpty () {
28- return transformers .isEmpty ();
29- }
30-
3124 byte [] transform (String name , byte [] classData ) {
3225
33- AtomicReference <TransformResult > result = new AtomicReference <>(TransformerFlag .NO_REWRITE .of (classData ));
34- AtomicReference <IClassTransformer > _transformer = new AtomicReference <>();
35-
3626 for (IClassTransformer transformer : transformers ) {
37- result .set (transformer .transform (name , classData ));
38- if (result .get ().flag () != TransformerFlag .NO_REWRITE ) {
39- _transformer .set (transformer );
40- break ;
27+
28+ TransformResult result = transformer .transform (name , classData );
29+
30+ if (DEBUG_CLASS_TRANSFORMING ) {
31+ // TODO: Implement this
4132 }
42- }
4333
44- if (result .get ().flag () != TransformerFlag .NO_REWRITE && _transformer .get () != null ) {
45- System .out .println ("%s Transformed %s" .formatted (_transformer .get ().getName (), name ));
46- return result .get ().classData ();
34+ if (result .flag () != TransformerFlag .NO_REWRITE ) {
35+ System .out .println (
36+ "%s Transformed %s"
37+ .formatted (transformer .getName (), name )
38+ );
39+
40+ return result .classData ();
41+ }
4742 }
4843
4944 return null ;
5045 }
5146
52- boolean containsClass (String name ) {
53- return classes .containsKey (name );
54- }
55-
56- Class <?> getClazz (String string ) {
57- return classes .get (string );
58- }
59- }
47+ }
0 commit comments