11package sootup .java .core ;
22
33import java .util .*;
4- import java .util .stream .Collectors ;
54import org .jspecify .annotations .NonNull ;
65import org .jspecify .annotations .Nullable ;
76import sootup .core .frontend .ResolveException ;
@@ -16,7 +15,7 @@ public final class DelegatingOverrideJavaClassSource extends JavaSootClassSource
1615
1716 private final @ NonNull JavaSootClassSource delegate ;
1817
19- // Optional overrides: when non-null, they override the delegate result (including "empty" = override-to-empty)
18+ // Optional overrides: when non-null, they override the delegate result
2019 private final @ Nullable Collection <JavaSootMethod > methodsOverride ;
2120 private final @ Nullable Collection <JavaSootField > fieldsOverride ;
2221 private final @ Nullable Set <ClassModifier > modifiersOverride ;
@@ -28,9 +27,6 @@ public final class DelegatingOverrideJavaClassSource extends JavaSootClassSource
2827 private final @ Nullable Iterable <AnnotationUsage > methodAnnotationsOverride ;
2928 private final @ Nullable Iterable <AnnotationUsage > fieldAnnotationsOverride ;
3029
31- private final @ NonNull Set <JavaSootMethod > deletedMethods ;
32- private final @ NonNull Set <JavaSootField > deletedFields ;
33-
3430 public DelegatingOverrideJavaClassSource (@ NonNull JavaSootClassSource delegate ) {
3531 super (delegate );
3632 this .delegate = Objects .requireNonNull (delegate );
@@ -45,9 +41,6 @@ public DelegatingOverrideJavaClassSource(@NonNull JavaSootClassSource delegate)
4541 this .annotationsOverride = null ;
4642 this .methodAnnotationsOverride = null ;
4743 this .fieldAnnotationsOverride = null ;
48-
49- this .deletedMethods = new HashSet <>();
50- this .deletedFields = new HashSet <>();
5144 }
5245
5346 private DelegatingOverrideJavaClassSource (
@@ -61,9 +54,7 @@ private DelegatingOverrideJavaClassSource(
6154 @ Nullable Position positionOverride ,
6255 @ Nullable Iterable <AnnotationUsage > annotationsOverride ,
6356 @ Nullable Iterable <AnnotationUsage > methodAnnotationsOverride ,
64- @ Nullable Iterable <AnnotationUsage > fieldAnnotationsOverride ,
65- @ NonNull Set <JavaSootMethod > deletedMethods ,
66- @ NonNull Set <JavaSootField > deletedFields ) {
57+ @ Nullable Iterable <AnnotationUsage > fieldAnnotationsOverride ) {
6758 super (delegate );
6859 this .delegate = delegate ;
6960 this .methodsOverride = methodsOverride ;
@@ -76,32 +67,16 @@ private DelegatingOverrideJavaClassSource(
7667 this .annotationsOverride = annotationsOverride ;
7768 this .methodAnnotationsOverride = methodAnnotationsOverride ;
7869 this .fieldAnnotationsOverride = fieldAnnotationsOverride ;
79- this .deletedMethods = new HashSet <>(deletedMethods );
80- this .deletedFields = new HashSet <>(deletedFields );
8170 }
8271
8372 @ Override
8473 public @ NonNull Collection <? extends SootMethod > resolveMethods () throws ResolveException {
85- Collection <? extends SootMethod > base =
86- (methodsOverride != null ) ? methodsOverride : delegate .resolveMethods ();
87- if (deletedMethods .isEmpty ()) {
88- return base ;
89- }
90- return base .stream ()
91- .filter (m -> !(m instanceof JavaSootMethod jm && deletedMethods .contains (jm )))
92- .collect (Collectors .toList ());
74+ return (methodsOverride != null ) ? methodsOverride : delegate .resolveMethods ();
9375 }
9476
9577 @ Override
9678 public @ NonNull Collection <? extends SootField > resolveFields () throws ResolveException {
97- Collection <? extends SootField > base =
98- (fieldsOverride != null ) ? fieldsOverride : delegate .resolveFields ();
99- if (deletedFields .isEmpty ()) {
100- return base ;
101- }
102- return base .stream ()
103- .filter (f -> !(f instanceof JavaSootField jf && deletedFields .contains (jf )))
104- .collect (Collectors .toList ());
79+ return (fieldsOverride != null ) ? fieldsOverride : delegate .resolveFields ();
10580 }
10681
10782 @ Override
@@ -147,9 +122,7 @@ private DelegatingOverrideJavaClassSource(
147122 positionOverride ,
148123 annotationsOverride ,
149124 methodAnnotationsOverride ,
150- fieldAnnotationsOverride ,
151- deletedMethods ,
152- deletedFields );
125+ fieldAnnotationsOverride );
153126 }
154127
155128 public @ NonNull DelegatingOverrideJavaClassSource withFields (
@@ -165,9 +138,7 @@ private DelegatingOverrideJavaClassSource(
165138 positionOverride ,
166139 annotationsOverride ,
167140 methodAnnotationsOverride ,
168- fieldAnnotationsOverride ,
169- deletedMethods ,
170- deletedFields );
141+ fieldAnnotationsOverride );
171142 }
172143
173144 public @ NonNull DelegatingOverrideJavaClassSource withModifiers (
@@ -183,9 +154,7 @@ private DelegatingOverrideJavaClassSource(
183154 positionOverride ,
184155 annotationsOverride ,
185156 methodAnnotationsOverride ,
186- fieldAnnotationsOverride ,
187- deletedMethods ,
188- deletedFields );
157+ fieldAnnotationsOverride );
189158 }
190159
191160 public @ NonNull DelegatingOverrideJavaClassSource withInterfaces (
@@ -201,9 +170,7 @@ private DelegatingOverrideJavaClassSource(
201170 positionOverride ,
202171 annotationsOverride ,
203172 methodAnnotationsOverride ,
204- fieldAnnotationsOverride ,
205- deletedMethods ,
206- deletedFields );
173+ fieldAnnotationsOverride );
207174 }
208175
209176 public @ NonNull DelegatingOverrideJavaClassSource withSuperclass (
@@ -219,9 +186,7 @@ private DelegatingOverrideJavaClassSource(
219186 positionOverride ,
220187 annotationsOverride ,
221188 methodAnnotationsOverride ,
222- fieldAnnotationsOverride ,
223- deletedMethods ,
224- deletedFields );
189+ fieldAnnotationsOverride );
225190 }
226191
227192 public @ NonNull DelegatingOverrideJavaClassSource withOuterClass (
@@ -237,9 +202,7 @@ private DelegatingOverrideJavaClassSource(
237202 positionOverride ,
238203 annotationsOverride ,
239204 methodAnnotationsOverride ,
240- fieldAnnotationsOverride ,
241- deletedMethods ,
242- deletedFields );
205+ fieldAnnotationsOverride );
243206 }
244207
245208 public @ NonNull DelegatingOverrideJavaClassSource withPosition (@ Nullable Position pos ) {
@@ -254,9 +217,7 @@ private DelegatingOverrideJavaClassSource(
254217 pos ,
255218 annotationsOverride ,
256219 methodAnnotationsOverride ,
257- fieldAnnotationsOverride ,
258- deletedMethods ,
259- deletedFields );
220+ fieldAnnotationsOverride );
260221 }
261222
262223 public @ NonNull DelegatingOverrideJavaClassSource withAnnotations (
@@ -272,9 +233,7 @@ private DelegatingOverrideJavaClassSource(
272233 positionOverride ,
273234 annotations ,
274235 methodAnnotationsOverride ,
275- fieldAnnotationsOverride ,
276- deletedMethods ,
277- deletedFields );
236+ fieldAnnotationsOverride );
278237 }
279238
280239 public @ NonNull DelegatingOverrideJavaClassSource withReplacedMethod (
@@ -299,81 +258,6 @@ private DelegatingOverrideJavaClassSource(
299258 return withFields (base );
300259 }
301260
302- public @ NonNull DelegatingOverrideJavaClassSource withDeletedMethod (@ NonNull JavaSootMethod m ) {
303- Set <JavaSootMethod > nm = new HashSet <>(deletedMethods );
304- nm .add (m );
305- return new DelegatingOverrideJavaClassSource (
306- delegate ,
307- methodsOverride ,
308- fieldsOverride ,
309- modifiersOverride ,
310- interfacesOverride ,
311- superclassOverride ,
312- outerClassOverride ,
313- positionOverride ,
314- annotationsOverride ,
315- methodAnnotationsOverride ,
316- fieldAnnotationsOverride ,
317- nm ,
318- deletedFields );
319- }
320-
321- public @ NonNull DelegatingOverrideJavaClassSource withDeletedField (@ NonNull JavaSootField f ) {
322- Set <JavaSootField > nf = new HashSet <>(deletedFields );
323- nf .add (f );
324- return new DelegatingOverrideJavaClassSource (
325- delegate ,
326- methodsOverride ,
327- fieldsOverride ,
328- modifiersOverride ,
329- interfacesOverride ,
330- superclassOverride ,
331- outerClassOverride ,
332- positionOverride ,
333- annotationsOverride ,
334- methodAnnotationsOverride ,
335- fieldAnnotationsOverride ,
336- deletedMethods ,
337- nf );
338- }
339-
340- public @ NonNull DelegatingOverrideJavaClassSource withDeletedMethods (
341- @ NonNull Collection <JavaSootMethod > ms ) {
342- Set <JavaSootMethod > nm = new HashSet <>(deletedMethods );
343- nm .addAll (ms );
344- return new DelegatingOverrideJavaClassSource (
345- delegate , methodsOverride , fieldsOverride , modifiersOverride , interfacesOverride ,
346- superclassOverride , outerClassOverride , positionOverride ,
347- annotationsOverride , methodAnnotationsOverride , fieldAnnotationsOverride , nm , deletedFields );
348- }
349-
350- public @ NonNull DelegatingOverrideJavaClassSource withDeletedFields (
351- @ NonNull Collection <JavaSootField > fs ) {
352- Set <JavaSootField > nf = new HashSet <>(deletedFields );
353- nf .addAll (fs );
354- return new DelegatingOverrideJavaClassSource (
355- delegate , methodsOverride , fieldsOverride , modifiersOverride , interfacesOverride ,
356- superclassOverride , outerClassOverride , positionOverride ,
357- annotationsOverride , methodAnnotationsOverride , fieldAnnotationsOverride , deletedMethods , nf );
358- }
359-
360- public @ NonNull DelegatingOverrideJavaClassSource withRestoredMethod (@ NonNull JavaSootMethod m ) {
361- Set <JavaSootMethod > nm = new HashSet <>(deletedMethods );
362- nm .remove (m );
363- return new DelegatingOverrideJavaClassSource (
364- delegate , methodsOverride , fieldsOverride , modifiersOverride , interfacesOverride ,
365- superclassOverride , outerClassOverride , positionOverride ,
366- annotationsOverride , methodAnnotationsOverride , fieldAnnotationsOverride , nm , deletedFields );
367- }
368-
369- public @ NonNull DelegatingOverrideJavaClassSource withRestoredField (@ NonNull JavaSootField f ) {
370- Set <JavaSootField > nf = new HashSet <>(deletedFields );
371- nf .remove (f );
372- return new DelegatingOverrideJavaClassSource (
373- delegate , methodsOverride , fieldsOverride , modifiersOverride , interfacesOverride ,
374- superclassOverride , outerClassOverride , positionOverride ,
375- annotationsOverride , methodAnnotationsOverride , fieldAnnotationsOverride , deletedMethods , nf );
376- }
377261
378262 private static Collection <JavaSootMethod > collectJavaMethods (
379263 Collection <? extends SootMethod > in ) {
@@ -407,19 +291,10 @@ private static <T> void replace(Collection<T> c, T oldV, T newV) {
407291 }
408292 }
409293
410- public @ NonNull Set <JavaSootMethod > getDeletedMethods () {
411- return Collections .unmodifiableSet (deletedMethods );
412- }
413-
414- public @ NonNull Set <JavaSootField > getDeletedFields () {
415- return Collections .unmodifiableSet (deletedFields );
416- }
417294
418295 @ Override
419296 public String toString () {
420297 return "DelegatingOverrideJavaClassSource{" +
421- "deletedMethods=" + deletedMethods .size () +
422- ", deletedFields=" + deletedFields .size () +
423298 ", delegate=" + delegate +
424299 '}' ;
425300 }
@@ -438,9 +313,7 @@ public boolean equals(Object o) {
438313 Objects .equals (positionOverride , that .positionOverride ) &&
439314 Objects .equals (annotationsOverride , that .annotationsOverride ) &&
440315 Objects .equals (methodAnnotationsOverride , that .methodAnnotationsOverride ) &&
441- Objects .equals (fieldAnnotationsOverride , that .fieldAnnotationsOverride ) &&
442- Objects .equals (deletedMethods , that .deletedMethods ) &&
443- Objects .equals (deletedFields , that .deletedFields );
316+ Objects .equals (fieldAnnotationsOverride , that .fieldAnnotationsOverride );
444317 }
445318
446319 @ Override
@@ -456,8 +329,6 @@ public int hashCode() {
456329 positionOverride ,
457330 annotationsOverride ,
458331 methodAnnotationsOverride ,
459- fieldAnnotationsOverride ,
460- deletedMethods ,
461- deletedFields );
332+ fieldAnnotationsOverride );
462333 }
463334}
0 commit comments