Skip to content

Commit b6f9d5d

Browse files
“Samarth“Samarth
authored andcommitted
remove deletedMethods/fields, add replacement logic to DelegatingOverrideJavaClassSource
1 parent bb87e59 commit b6f9d5d

File tree

1 file changed

+14
-143
lines changed

1 file changed

+14
-143
lines changed

sootup.java.core/src/main/java/sootup/java/core/DelegatingOverrideJavaClassSource.java

Lines changed: 14 additions & 143 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package sootup.java.core;
22

33
import java.util.*;
4-
import java.util.stream.Collectors;
54
import org.jspecify.annotations.NonNull;
65
import org.jspecify.annotations.Nullable;
76
import 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

Comments
 (0)