Skip to content

Commit 99f78ba

Browse files
authored
Merge pull request #406 from offa/refactoring
Refactoring / modernization
2 parents 7c1b73a + 753a4ab commit 99f78ba

File tree

15 files changed

+110
-229
lines changed

15 files changed

+110
-229
lines changed

src/main/java/org/jenkinsci/plugins/scriptsecurity/sandbox/Whitelist.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,6 @@ public abstract class Whitelist implements ExtensionPoint {
9595
}
9696
return all;
9797
}
98-
private static final Map<Jenkins,Whitelist> allByJenkins = new WeakHashMap<Jenkins,Whitelist>();
98+
private static final Map<Jenkins,Whitelist> allByJenkins = new WeakHashMap<>();
9999

100100
}

src/main/java/org/jenkinsci/plugins/scriptsecurity/sandbox/groovy/GroovyCallSiteSelector.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -268,7 +268,7 @@ private static boolean isVarArgsMethod(@NonNull Method m, @NonNull Object[] args
268268
}
269269

270270
private static Set<Class<?>> types(@NonNull Object o) {
271-
Set<Class<?>> types = new LinkedHashSet<Class<?>>();
271+
Set<Class<?>> types = new LinkedHashSet<>();
272272
visitTypes(types, o.getClass());
273273
return types;
274274
}

src/main/java/org/jenkinsci/plugins/scriptsecurity/sandbox/groovy/SandboxInterceptor.java

Lines changed: 14 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -203,11 +203,7 @@ final class SandboxInterceptor extends GroovyInterceptor {
203203
if (whitelist.permitsMethod(setterMethod, receiver, valueArg)) {
204204
return super.onSetProperty(invoker, receiver, property, value);
205205
} else if (rejector == null) {
206-
rejector = new Rejector() {
207-
@Override public RejectedAccessException reject() {
208-
return StaticWhitelist.rejectMethod(setterMethod);
209-
}
210-
};
206+
rejector = () -> StaticWhitelist.rejectMethod(setterMethod);
211207
}
212208
}
213209
Object[] propertyValueArgs = new Object[] {property, value};
@@ -216,23 +212,15 @@ final class SandboxInterceptor extends GroovyInterceptor {
216212
if (whitelist.permitsMethod(setPropertyMethod, receiver, propertyValueArgs)) {
217213
return super.onSetProperty(invoker, receiver, property, value);
218214
} else if (rejector == null) {
219-
rejector = new Rejector() {
220-
@Override public RejectedAccessException reject() {
221-
return StaticWhitelist.rejectMethod(setPropertyMethod, receiver.getClass().getName() + "." + property);
222-
}
223-
};
215+
rejector = () -> StaticWhitelist.rejectMethod(setPropertyMethod, receiver.getClass().getName() + "." + property);
224216
}
225217
}
226218
final Field instanceField = GroovyCallSiteSelector.field(receiver, property);
227219
if (instanceField != null) {
228220
if (whitelist.permitsFieldSet(instanceField, receiver, value)) {
229221
return super.onSetProperty(invoker, receiver, property, value);
230222
} else if (rejector == null) {
231-
rejector = new Rejector() {
232-
@Override public RejectedAccessException reject() {
233-
return StaticWhitelist.rejectField(instanceField);
234-
}
235-
};
223+
rejector = () -> StaticWhitelist.rejectField(instanceField);
236224
}
237225
}
238226
if (receiver instanceof Class) {
@@ -241,23 +229,15 @@ final class SandboxInterceptor extends GroovyInterceptor {
241229
if (whitelist.permitsStaticMethod(staticSetterMethod, valueArg)) {
242230
return super.onSetProperty(invoker, receiver, property, value);
243231
} else if (rejector == null) {
244-
rejector = new Rejector() {
245-
@Override public RejectedAccessException reject() {
246-
return StaticWhitelist.rejectStaticMethod(staticSetterMethod);
247-
}
248-
};
232+
rejector = () -> StaticWhitelist.rejectStaticMethod(staticSetterMethod);
249233
}
250234
}
251235
final Field staticField = GroovyCallSiteSelector.staticField((Class) receiver, property);
252236
if (staticField != null) {
253237
if (whitelist.permitsStaticFieldSet(staticField, value)) {
254238
return super.onSetProperty(invoker, receiver, property, value);
255239
} else if (rejector == null) {
256-
rejector = new Rejector() {
257-
@Override public RejectedAccessException reject() {
258-
return StaticWhitelist.rejectStaticField(staticField);
259-
}
260-
};
240+
rejector = () -> StaticWhitelist.rejectStaticField(staticField);
261241
}
262242
}
263243
}
@@ -285,11 +265,7 @@ final class SandboxInterceptor extends GroovyInterceptor {
285265
if (whitelist.permitsMethod(getterMethod, receiver, noArgs)) {
286266
return super.onGetProperty(invoker, receiver, property);
287267
} else if (rejector == null) {
288-
rejector = new Rejector() {
289-
@Override public RejectedAccessException reject() {
290-
return StaticWhitelist.rejectMethod(getterMethod);
291-
}
292-
};
268+
rejector = () -> StaticWhitelist.rejectMethod(getterMethod);
293269
}
294270
}
295271
String booleanGetter = "is" + Functions.capitalize(property);
@@ -298,11 +274,7 @@ final class SandboxInterceptor extends GroovyInterceptor {
298274
if (whitelist.permitsMethod(booleanGetterMethod, receiver, noArgs)) {
299275
return super.onGetProperty(invoker, receiver, property);
300276
} else if (rejector == null) {
301-
rejector = new Rejector() {
302-
@Override public RejectedAccessException reject() {
303-
return StaticWhitelist.rejectMethod(booleanGetterMethod);
304-
}
305-
};
277+
rejector = () -> StaticWhitelist.rejectMethod(booleanGetterMethod);
306278
}
307279
}
308280
// look for GDK methods
@@ -313,25 +285,15 @@ final class SandboxInterceptor extends GroovyInterceptor {
313285
if (whitelist.permitsStaticMethod(dgmGetterMethod, selfArgs)) {
314286
return super.onGetProperty(invoker, receiver, property);
315287
} else if (rejector == null) {
316-
rejector = new Rejector() {
317-
@Override
318-
public RejectedAccessException reject() {
319-
return StaticWhitelist.rejectStaticMethod(dgmGetterMethod);
320-
}
321-
};
288+
rejector = () -> StaticWhitelist.rejectStaticMethod(dgmGetterMethod);
322289
}
323290
}
324291
final Method dgmBooleanGetterMethod = GroovyCallSiteSelector.staticMethod(dgmClass, booleanGetter, selfArgs);
325292
if (dgmBooleanGetterMethod != null && dgmBooleanGetterMethod.getReturnType() == boolean.class) {
326293
if (whitelist.permitsStaticMethod(dgmBooleanGetterMethod, selfArgs)) {
327294
return super.onGetProperty(invoker, receiver, property);
328295
} else if (rejector == null) {
329-
rejector = new Rejector() {
330-
@Override
331-
public RejectedAccessException reject() {
332-
return StaticWhitelist.rejectStaticMethod(dgmBooleanGetterMethod);
333-
}
334-
};
296+
rejector = () -> StaticWhitelist.rejectStaticMethod(dgmBooleanGetterMethod);
335297
}
336298
}
337299
}
@@ -340,11 +302,7 @@ public RejectedAccessException reject() {
340302
if (whitelist.permitsFieldGet(instanceField, receiver)) {
341303
return super.onGetProperty(invoker, receiver, property);
342304
} else if (rejector == null) {
343-
rejector = new Rejector() {
344-
@Override public RejectedAccessException reject() {
345-
return StaticWhitelist.rejectField(instanceField);
346-
}
347-
};
305+
rejector = () -> StaticWhitelist.rejectField(instanceField);
348306
}
349307
}
350308
// GroovyObject property access
@@ -354,11 +312,7 @@ public RejectedAccessException reject() {
354312
if (whitelist.permitsMethod(getPropertyMethod, receiver, propertyArg)) {
355313
return super.onGetProperty(invoker, receiver, property);
356314
} else if (rejector == null) {
357-
rejector = new Rejector() {
358-
@Override public RejectedAccessException reject() {
359-
return StaticWhitelist.rejectMethod(getPropertyMethod, receiver.getClass().getName() + "." + property);
360-
}
361-
};
315+
rejector = () -> StaticWhitelist.rejectMethod(getPropertyMethod, receiver.getClass().getName() + "." + property);
362316
}
363317
}
364318
MetaMethod metaMethod = findMetaMethod(receiver, getter, noArgs);
@@ -372,35 +326,23 @@ public RejectedAccessException reject() {
372326
if (whitelist.permitsStaticMethod(staticGetterMethod, noArgs)) {
373327
return super.onGetProperty(invoker, receiver, property);
374328
} else if (rejector == null) {
375-
rejector = new Rejector() {
376-
@Override public RejectedAccessException reject() {
377-
return StaticWhitelist.rejectStaticMethod(staticGetterMethod);
378-
}
379-
};
329+
rejector = () -> StaticWhitelist.rejectStaticMethod(staticGetterMethod);
380330
}
381331
}
382332
final Method staticBooleanGetterMethod = GroovyCallSiteSelector.staticMethod((Class) receiver, booleanGetter, noArgs);
383333
if (staticBooleanGetterMethod != null && staticBooleanGetterMethod.getReturnType() == boolean.class) {
384334
if (whitelist.permitsStaticMethod(staticBooleanGetterMethod, noArgs)) {
385335
return super.onGetProperty(invoker, receiver, property);
386336
} else if (rejector == null) {
387-
rejector = new Rejector() {
388-
@Override public RejectedAccessException reject() {
389-
return StaticWhitelist.rejectStaticMethod(staticBooleanGetterMethod);
390-
}
391-
};
337+
rejector = () -> StaticWhitelist.rejectStaticMethod(staticBooleanGetterMethod);
392338
}
393339
}
394340
final Field staticField = GroovyCallSiteSelector.staticField((Class) receiver, property);
395341
if (staticField != null) {
396342
if (whitelist.permitsStaticFieldGet(staticField)) {
397343
return super.onGetProperty(invoker, receiver, property);
398344
} else if (rejector == null) {
399-
rejector = new Rejector() {
400-
@Override public RejectedAccessException reject() {
401-
return StaticWhitelist.rejectStaticField(staticField);
402-
}
403-
};
345+
rejector = () -> StaticWhitelist.rejectStaticField(staticField);
404346
}
405347
}
406348
}

src/main/java/org/jenkinsci/plugins/scriptsecurity/sandbox/groovy/SecureGroovyScript.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -334,7 +334,7 @@ public Object evaluate(ClassLoader loader, Binding binding, @CheckForNull TaskLi
334334
ClassLoader memoryProtectedLoader = null;
335335
List<ClasspathEntry> cp = getClasspath();
336336
if (!cp.isEmpty()) {
337-
List<URL> urlList = new ArrayList<URL>(cp.size());
337+
List<URL> urlList = new ArrayList<>(cp.size());
338338

339339
for (ClasspathEntry entry : cp) {
340340
ScriptApproval.get().using(entry);
@@ -380,7 +380,7 @@ public Object evaluate(ClassLoader loader, Binding binding, @CheckForNull TaskLi
380380
} finally {
381381
try {
382382
if (canDoCleanup) {
383-
cleanUpLoader(memoryProtectedLoader, new HashSet<ClassLoader>(), new HashSet<Class<?>>());
383+
cleanUpLoader(memoryProtectedLoader, new HashSet<>(), new HashSet<>());
384384
}
385385
} catch (Exception x) {
386386
LOGGER.log(Level.WARNING, "failed to clean up memory " , x);

src/main/java/org/jenkinsci/plugins/scriptsecurity/sandbox/whitelists/EnumeratingWhitelist.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ public abstract class EnumeratingWhitelist extends Whitelist {
5757

5858
protected abstract List<FieldSignature> staticFieldSignatures();
5959

60-
ConcurrentHashMap<String, Boolean> permittedCache = new ConcurrentHashMap<String, Boolean>(); // Not private to facilitate testing
60+
ConcurrentHashMap<String, Boolean> permittedCache = new ConcurrentHashMap<>(); // Not private to facilitate testing
6161

6262
@SafeVarargs
6363
private final void cacheSignatureList(List<Signature> ...sigs) {
@@ -83,7 +83,7 @@ final void precache() {
8383
/** Frees up nearly all memory used for the cache. MUST BE CALLED if you change the result of the xxSignatures() methods. */
8484
final void clearCache() {
8585
this.permittedCache.clear();
86-
this.permittedCache = new ConcurrentHashMap<String, Boolean>();
86+
this.permittedCache = new ConcurrentHashMap<>();
8787
}
8888

8989
@Override public final boolean permitsMethod(Method method, Object receiver, Object[] args) {

src/main/java/org/jenkinsci/plugins/scriptsecurity/sandbox/whitelists/ProxyWhitelist.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -47,26 +47,26 @@ public class ProxyWhitelist extends Whitelist {
4747
private Collection<? extends Whitelist> originalDelegates;
4848

4949
@GuardedBy("lock")
50-
final List<Whitelist> delegates = new ArrayList<Whitelist>();
50+
final List<Whitelist> delegates = new ArrayList<>();
5151

5252
@GuardedBy("lock")
53-
private final List<EnumeratingWhitelist.MethodSignature> methodSignatures = new ArrayList<EnumeratingWhitelist.MethodSignature>();
53+
private final List<EnumeratingWhitelist.MethodSignature> methodSignatures = new ArrayList<>();
5454

5555
@GuardedBy("lock")
56-
private final List<EnumeratingWhitelist.NewSignature> newSignatures = new ArrayList<EnumeratingWhitelist.NewSignature>();
56+
private final List<EnumeratingWhitelist.NewSignature> newSignatures = new ArrayList<>();
5757

5858
@GuardedBy("lock")
59-
private final List<EnumeratingWhitelist.MethodSignature> staticMethodSignatures = new ArrayList<EnumeratingWhitelist.MethodSignature>();
59+
private final List<EnumeratingWhitelist.MethodSignature> staticMethodSignatures = new ArrayList<>();
6060

6161
@GuardedBy("lock")
62-
private final List<EnumeratingWhitelist.FieldSignature> fieldSignatures = new ArrayList<EnumeratingWhitelist.FieldSignature>();
62+
private final List<EnumeratingWhitelist.FieldSignature> fieldSignatures = new ArrayList<>();
6363

6464
@GuardedBy("lock")
65-
private final List<EnumeratingWhitelist.FieldSignature> staticFieldSignatures = new ArrayList<EnumeratingWhitelist.FieldSignature>();
65+
private final List<EnumeratingWhitelist.FieldSignature> staticFieldSignatures = new ArrayList<>();
6666

6767
/** anything wrapping us, so that we can propagate {@link #reset} calls up the chain */
6868
@GuardedBy("lock")
69-
private final Map<ProxyWhitelist,Void> wrappers = new WeakHashMap<ProxyWhitelist,Void>();
69+
private final Map<ProxyWhitelist,Void> wrappers = new WeakHashMap<>();
7070

7171
// TODO Consider StampedLock when we switch to Java8 for better performance - https://dzone.com/articles/a-look-at-stampedlock
7272
private ReentrantReadWriteLock lock = new ReentrantReadWriteLock();

0 commit comments

Comments
 (0)