1
1
/*
2
- * Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved.
2
+ * Copyright (c) 2022, 2024, Oracle and/or its affiliates. All rights reserved.
3
3
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4
4
*
5
5
* This code is free software; you can redistribute it and/or modify it
33
33
34
34
public final class ChainedClassBuilder
35
35
implements ClassBuilder , Consumer <ClassElement > {
36
- private final ClassBuilder downstream ;
37
36
private final DirectClassBuilder terminal ;
38
37
private final Consumer <ClassElement > consumer ;
39
38
40
39
public ChainedClassBuilder (ClassBuilder downstream ,
41
40
Consumer <ClassElement > consumer ) {
42
- this .downstream = downstream ;
43
41
this .consumer = consumer ;
44
42
this .terminal = switch (downstream ) {
45
43
case ChainedClassBuilder cb -> cb .terminal ;
@@ -60,10 +58,11 @@ public Optional<ClassModel> original() {
60
58
61
59
@ Override
62
60
public ClassBuilder withField (Utf8Entry name , Utf8Entry descriptor , Consumer <? super FieldBuilder > handler ) {
63
- return downstream . with (new BufferedFieldBuilder (terminal .constantPool , terminal .context ,
61
+ consumer . accept (new BufferedFieldBuilder (terminal .constantPool , terminal .context ,
64
62
name , descriptor , null )
65
63
.run (handler )
66
64
.toModel ());
65
+ return this ;
67
66
}
68
67
69
68
@ Override
@@ -72,24 +71,27 @@ public ClassBuilder transformField(FieldModel field, FieldTransform transform) {
72
71
field .fieldName (), field .fieldType (),
73
72
field );
74
73
builder .transform (field , transform );
75
- return downstream .with (builder .toModel ());
74
+ consumer .accept (builder .toModel ());
75
+ return this ;
76
76
}
77
77
78
78
@ Override
79
79
public ClassBuilder withMethod (Utf8Entry name , Utf8Entry descriptor , int flags ,
80
80
Consumer <? super MethodBuilder > handler ) {
81
- return downstream . with (new BufferedMethodBuilder (terminal .constantPool , terminal .context ,
81
+ consumer . accept (new BufferedMethodBuilder (terminal .constantPool , terminal .context ,
82
82
name , descriptor , null )
83
83
.run (handler )
84
84
.toModel ());
85
+ return this ;
85
86
}
86
87
87
88
@ Override
88
89
public ClassBuilder transformMethod (MethodModel method , MethodTransform transform ) {
89
90
BufferedMethodBuilder builder = new BufferedMethodBuilder (terminal .constantPool , terminal .context ,
90
91
method .methodName (), method .methodType (), method );
91
92
builder .transform (method , transform );
92
- return downstream .with (builder .toModel ());
93
+ consumer .accept (builder .toModel ());
94
+ return this ;
93
95
}
94
96
95
97
@ Override
0 commit comments