Skip to content

Commit a94787d

Browse files
committed
EOL JSR 305
1 parent ba21ca2 commit a94787d

13 files changed

Lines changed: 111 additions & 111 deletions

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424

2525
package org.jenkinsci.plugins.scriptsecurity.sandbox;
2626

27-
import javax.annotation.CheckForNull;
27+
import edu.umd.cs.findbugs.annotations.CheckForNull;
2828
import org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.GroovySandbox;
2929
import org.jenkinsci.plugins.scriptsecurity.sandbox.whitelists.StaticWhitelist;
3030

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

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,8 @@
3434
import java.util.WeakHashMap;
3535
import java.util.logging.Level;
3636
import java.util.logging.Logger;
37-
import javax.annotation.CheckForNull;
38-
import javax.annotation.Nonnull;
37+
import edu.umd.cs.findbugs.annotations.CheckForNull;
38+
import edu.umd.cs.findbugs.annotations.NonNull;
3939
import jenkins.model.Jenkins;
4040
import org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.GroovySandbox;
4141
import org.jenkinsci.plugins.scriptsecurity.sandbox.whitelists.ProxyWhitelist;
@@ -57,25 +57,25 @@ public abstract class Whitelist implements ExtensionPoint {
5757
* @param args zero or more arguments
5858
* @return true to allow the method to be called, false to reject it
5959
*/
60-
public abstract boolean permitsMethod(@Nonnull Method method, @Nonnull Object receiver, @Nonnull Object[] args);
60+
public abstract boolean permitsMethod(@NonNull Method method, @NonNull Object receiver, @NonNull Object[] args);
6161

62-
public abstract boolean permitsConstructor(@Nonnull Constructor<?> constructor, @Nonnull Object[] args);
62+
public abstract boolean permitsConstructor(@NonNull Constructor<?> constructor, @NonNull Object[] args);
6363

64-
public abstract boolean permitsStaticMethod(@Nonnull Method method, @Nonnull Object[] args);
64+
public abstract boolean permitsStaticMethod(@NonNull Method method, @NonNull Object[] args);
6565

66-
public abstract boolean permitsFieldGet(@Nonnull Field field, @Nonnull Object receiver);
66+
public abstract boolean permitsFieldGet(@NonNull Field field, @NonNull Object receiver);
6767

68-
public abstract boolean permitsFieldSet(@Nonnull Field field, @Nonnull Object receiver, @CheckForNull Object value);
68+
public abstract boolean permitsFieldSet(@NonNull Field field, @NonNull Object receiver, @CheckForNull Object value);
6969

70-
public abstract boolean permitsStaticFieldGet(@Nonnull Field field);
70+
public abstract boolean permitsStaticFieldGet(@NonNull Field field);
7171

72-
public abstract boolean permitsStaticFieldSet(@Nonnull Field field, @CheckForNull Object value);
72+
public abstract boolean permitsStaticFieldSet(@NonNull Field field, @CheckForNull Object value);
7373

7474
/**
7575
* Checks for all whitelists registered as {@link Extension}s and aggregates them.
7676
* @return an aggregated default list
7777
*/
78-
public static synchronized @Nonnull Whitelist all() {
78+
public static synchronized @NonNull Whitelist all() {
7979
Jenkins j = Jenkins.getInstanceOrNull();
8080
if (j == null) {
8181
LOGGER.log(Level.WARNING, "No Jenkins.instance", new Throwable("here"));

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

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,8 @@
3434
import java.util.LinkedHashSet;
3535
import java.util.Map;
3636
import java.util.Set;
37-
import javax.annotation.CheckForNull;
38-
import javax.annotation.Nonnull;
37+
import edu.umd.cs.findbugs.annotations.CheckForNull;
38+
import edu.umd.cs.findbugs.annotations.NonNull;
3939
import org.apache.commons.lang.ClassUtils;
4040
import org.codehaus.groovy.runtime.typehandling.DefaultTypeTransformation;
4141

@@ -47,7 +47,7 @@
4747
*/
4848
class GroovyCallSiteSelector {
4949

50-
private static boolean matches(@Nonnull Class<?>[] parameterTypes, @Nonnull Object[] parameters, boolean varargs) {
50+
private static boolean matches(@NonNull Class<?>[] parameterTypes, @NonNull Object[] parameters, boolean varargs) {
5151
if (varargs) {
5252
parameters = parametersForVarargs(parameterTypes, parameters);
5353
}
@@ -119,7 +119,7 @@ private static Object[] parametersForVarargs(Class<?>[] parameterTypes, Object[]
119119
/**
120120
* {@link Class#isInstance} extended to handle some important cases of primitive types.
121121
*/
122-
private static boolean isInstancePrimitive(@Nonnull Class<?> type, @Nonnull Object instance) {
122+
private static boolean isInstancePrimitive(@NonNull Class<?> type, @NonNull Object instance) {
123123
if (type.isInstance(instance)) {
124124
return true;
125125
}
@@ -146,7 +146,7 @@ private static boolean isInstancePrimitive(@Nonnull Class<?> type, @Nonnull Obje
146146
* @param method the method name
147147
* @param args a set of actual arguments
148148
*/
149-
public static @CheckForNull Method method(@Nonnull Object receiver, @Nonnull String method, @Nonnull Object[] args) {
149+
public static @CheckForNull Method method(@NonNull Object receiver, @NonNull String method, @NonNull Object[] args) {
150150
Set<Class<?>> types = types(receiver);
151151
if (types.contains(GroovyInterceptable.class) && !"invokeMethod".equals(method)) {
152152
return method(receiver, "invokeMethod", new Object[]{ method, args });
@@ -166,7 +166,7 @@ private static boolean isInstancePrimitive(@Nonnull Class<?> type, @Nonnull Obje
166166
return null;
167167
}
168168

169-
public static @CheckForNull Constructor<?> constructor(@Nonnull Class<?> receiver, @Nonnull Object[] args) {
169+
public static @CheckForNull Constructor<?> constructor(@NonNull Class<?> receiver, @NonNull Object[] args) {
170170
Constructor<?>[] constructors = receiver.getDeclaredConstructors();
171171
Constructor<?> candidate = null;
172172
for (Constructor<?> c : constructors) {
@@ -194,11 +194,11 @@ private static boolean isInstancePrimitive(@Nonnull Class<?> type, @Nonnull Obje
194194
return null;
195195
}
196196

197-
public static @CheckForNull Method staticMethod(@Nonnull Class<?> receiver, @Nonnull String method, @Nonnull Object[] args) {
197+
public static @CheckForNull Method staticMethod(@NonNull Class<?> receiver, @NonNull String method, @NonNull Object[] args) {
198198
return findMatchingMethod(receiver, method, args);
199199
}
200200

201-
private static Method findMatchingMethod(@Nonnull Class<?> receiver, @Nonnull String method, @Nonnull Object[] args) {
201+
private static Method findMatchingMethod(@NonNull Class<?> receiver, @NonNull String method, @NonNull Object[] args) {
202202
Method candidate = null;
203203

204204
for (Method m : receiver.getDeclaredMethods()) {
@@ -218,7 +218,7 @@ private static Method findMatchingMethod(@Nonnull Class<?> receiver, @Nonnull St
218218
/**
219219
* Emulates, with some tweaks, {@link org.codehaus.groovy.reflection.ParameterTypes#isVargsMethod(Object[])}
220220
*/
221-
private static boolean isVarArgsMethod(@Nonnull Method m, @Nonnull Object[] args) {
221+
private static boolean isVarArgsMethod(@NonNull Method m, @NonNull Object[] args) {
222222
if (m.isVarArgs()) {
223223
return true;
224224
}
@@ -247,7 +247,7 @@ private static boolean isVarArgsMethod(@Nonnull Method m, @Nonnull Object[] args
247247
return false;
248248
}
249249

250-
public static @CheckForNull Field field(@Nonnull Object receiver, @Nonnull String field) {
250+
public static @CheckForNull Field field(@NonNull Object receiver, @NonNull String field) {
251251
for (Class<?> c : types(receiver)) {
252252
for (Field f : c.getDeclaredFields()) {
253253
if (f.getName().equals(field)) {
@@ -258,7 +258,7 @@ private static boolean isVarArgsMethod(@Nonnull Method m, @Nonnull Object[] args
258258
return null;
259259
}
260260

261-
public static @CheckForNull Field staticField(@Nonnull Class<?> receiver, @Nonnull String field) {
261+
public static @CheckForNull Field staticField(@NonNull Class<?> receiver, @NonNull String field) {
262262
for (Field f : receiver.getDeclaredFields()) {
263263
if (f.getName().equals(field)) {
264264
return f;
@@ -267,12 +267,12 @@ private static boolean isVarArgsMethod(@Nonnull Method m, @Nonnull Object[] args
267267
return null;
268268
}
269269

270-
private static Set<Class<?>> types(@Nonnull Object o) {
270+
private static Set<Class<?>> types(@NonNull Object o) {
271271
Set<Class<?>> types = new LinkedHashSet<Class<?>>();
272272
visitTypes(types, o.getClass());
273273
return types;
274274
}
275-
private static void visitTypes(@Nonnull Set<Class<?>> types, @Nonnull Class<?> c) {
275+
private static void visitTypes(@NonNull Set<Class<?>> types, @NonNull Class<?> c) {
276276
Class<?> s = c.getSuperclass();
277277
if (s != null) {
278278
visitTypes(types, s);

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

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,8 @@
4343
import java.util.concurrent.Callable;
4444
import java.util.logging.Level;
4545
import java.util.logging.Logger;
46-
import javax.annotation.CheckForNull;
47-
import javax.annotation.Nonnull;
46+
import edu.umd.cs.findbugs.annotations.CheckForNull;
47+
import edu.umd.cs.findbugs.annotations.NonNull;
4848
import org.codehaus.groovy.control.CompilationFailedException;
4949
import org.codehaus.groovy.control.CompilationUnit;
5050
import org.codehaus.groovy.control.CompilerConfiguration;
@@ -105,7 +105,7 @@ public GroovySandbox withTaskListener(@CheckForNull TaskListener listener) {
105105
return this;
106106
}
107107

108-
private @Nonnull Whitelist whitelist() {
108+
private @NonNull Whitelist whitelist() {
109109
return whitelist != null ? whitelist : Whitelist.all();
110110
}
111111

@@ -153,7 +153,7 @@ public interface Scope extends AutoCloseable {
153153
* @param script the script to run
154154
* @return the return value of the script
155155
*/
156-
public Object runScript(@Nonnull GroovyShell shell, @Nonnull String script) {
156+
public Object runScript(@NonNull GroovyShell shell, @NonNull String script) {
157157
GroovySandbox derived = new GroovySandbox().
158158
withApprovalContext(context).
159159
withTaskListener(listener).
@@ -178,7 +178,7 @@ public Object runScript(@Nonnull GroovyShell shell, @Nonnull String script) {
178178
*
179179
* @return a compiler configuration set up to use the sandbox
180180
*/
181-
public static @Nonnull CompilerConfiguration createSecureCompilerConfiguration() {
181+
public static @NonNull CompilerConfiguration createSecureCompilerConfiguration() {
182182
CompilerConfiguration cc = createBaseCompilerConfiguration();
183183
cc.addCompilationCustomizers(new SandboxTransformer());
184184
return cc;
@@ -187,7 +187,7 @@ public Object runScript(@Nonnull GroovyShell shell, @Nonnull String script) {
187187
/**
188188
* Prepares a compiler configuration that rejects certain AST transformations. Used by {@link #createSecureCompilerConfiguration()}.
189189
*/
190-
public static @Nonnull CompilerConfiguration createBaseCompilerConfiguration() {
190+
public static @NonNull CompilerConfiguration createBaseCompilerConfiguration() {
191191
CompilerConfiguration cc = new CompilerConfiguration();
192192
cc.addCompilationCustomizers(new RejectASTTransformsCustomizer());
193193
cc.setDisabledGlobalASTTransformations(new HashSet<>(Collections.singletonList(GrabAnnotationTransformation.class.getName())));
@@ -200,7 +200,7 @@ public Object runScript(@Nonnull GroovyShell shell, @Nonnull String script) {
200200
* See {@link #createSecureCompilerConfiguration()} for the discussion.
201201
*/
202202
@SuppressFBWarnings(value = "DP_CREATE_CLASSLOADER_INSIDE_DO_PRIVILEGED", justification = "Should be managed by the caller.")
203-
public static @Nonnull ClassLoader createSecureClassLoader(ClassLoader base) {
203+
public static @NonNull ClassLoader createSecureClassLoader(ClassLoader base) {
204204
return new SandboxResolvingClassLoader(base);
205205
}
206206

@@ -214,7 +214,7 @@ public Object runScript(@Nonnull GroovyShell shell, @Nonnull String script) {
214214
* @deprecated use {@link #enter}
215215
*/
216216
@Deprecated
217-
public static void runInSandbox(@Nonnull Runnable r, @Nonnull Whitelist whitelist) throws RejectedAccessException {
217+
public static void runInSandbox(@NonNull Runnable r, @NonNull Whitelist whitelist) throws RejectedAccessException {
218218
try (Scope scope = new GroovySandbox().withWhitelist(whitelist).enter()) {
219219
r.run();
220220
}
@@ -232,7 +232,7 @@ public static void runInSandbox(@Nonnull Runnable r, @Nonnull Whitelist whitelis
232232
* @deprecated use {@link #enter}
233233
*/
234234
@Deprecated
235-
public static <V> V runInSandbox(@Nonnull Callable<V> c, @Nonnull Whitelist whitelist) throws Exception {
235+
public static <V> V runInSandbox(@NonNull Callable<V> c, @NonNull Whitelist whitelist) throws Exception {
236236
try (Scope scope = new GroovySandbox().withWhitelist(whitelist).enter()) {
237237
return c.call();
238238
}
@@ -244,7 +244,7 @@ public static <V> V runInSandbox(@Nonnull Callable<V> c, @Nonnull Whitelist whit
244244
* @deprecated insecure; use {@link #run(GroovyShell, String, Whitelist)} or {@link #runScript}
245245
*/
246246
@Deprecated
247-
public static Object run(@Nonnull Script script, @Nonnull final Whitelist whitelist) throws RejectedAccessException {
247+
public static Object run(@NonNull Script script, @NonNull final Whitelist whitelist) throws RejectedAccessException {
248248
LOGGER.log(Level.WARNING, null, new IllegalStateException(Messages.GroovySandbox_useOfInsecureRunOverload()));
249249
Whitelist wrapperWhitelist = new ProxyWhitelist(
250250
new ClassLoaderWhitelist(script.getClass().getClassLoader()),
@@ -265,7 +265,7 @@ public static Object run(@Nonnull Script script, @Nonnull final Whitelist whitel
265265
* @deprecated use {@link #runScript}
266266
*/
267267
@Deprecated
268-
public static Object run(@Nonnull final GroovyShell shell, @Nonnull final String script, @Nonnull final Whitelist whitelist) throws RejectedAccessException {
268+
public static Object run(@NonNull final GroovyShell shell, @NonNull final String script, @NonNull final Whitelist whitelist) throws RejectedAccessException {
269269
return new GroovySandbox().withWhitelist(whitelist).runScript(shell, script);
270270
}
271271

@@ -276,7 +276,7 @@ public static Object run(@Nonnull final GroovyShell shell, @Nonnull final String
276276
* @param classLoader The {@link GroovyClassLoader} to use during compilation.
277277
* @return The {@link FormValidation} for the compilation check.
278278
*/
279-
public static @Nonnull FormValidation checkScriptForCompilationErrors(String script, GroovyClassLoader classLoader) {
279+
public static @NonNull FormValidation checkScriptForCompilationErrors(String script, GroovyClassLoader classLoader) {
280280
try {
281281
CompilationUnit cu = new CompilationUnit(
282282
createSecureCompilerConfiguration(),

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,8 @@
4141
import java.util.Set;
4242
import java.util.logging.Level;
4343
import java.util.logging.Logger;
44-
import javax.annotation.CheckForNull;
45-
import javax.annotation.Nonnull;
44+
import edu.umd.cs.findbugs.annotations.CheckForNull;
45+
import edu.umd.cs.findbugs.annotations.NonNull;
4646
import org.codehaus.groovy.runtime.DateGroovyMethods;
4747
import org.codehaus.groovy.runtime.DefaultGroovyMethods;
4848
import org.codehaus.groovy.runtime.EncodingGroovyMethods;
@@ -428,7 +428,7 @@ private static RejectedAccessException unclassifiedField(Object receiver, String
428428

429429
// TODO Java 8: @FunctionalInterface
430430
private interface Rejector {
431-
@Nonnull RejectedAccessException reject();
431+
@NonNull RejectedAccessException reject();
432432
}
433433

434434
@Override public Object onGetAttribute(Invoker invoker, Object receiver, String attribute) throws Throwable {
@@ -516,7 +516,7 @@ private static String printArgumentTypes(Object[] args) {
516516
return b.toString();
517517
}
518518

519-
private static @CheckForNull MetaMethod findMetaMethod(@Nonnull Object receiver, @Nonnull String method, @Nonnull Object[] args) {
519+
private static @CheckForNull MetaMethod findMetaMethod(@NonNull Object receiver, @NonNull String method, @NonNull Object[] args) {
520520
Class<?>[] types = new Class[args.length];
521521
for (int i = 0; i < types.length; i++) {
522522
Object arg = args[i];

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

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,8 @@
5555
import java.util.concurrent.ConcurrentMap;
5656
import java.util.logging.Level;
5757
import java.util.logging.Logger;
58-
import javax.annotation.CheckForNull;
59-
import javax.annotation.Nonnull;
58+
import edu.umd.cs.findbugs.annotations.CheckForNull;
59+
import edu.umd.cs.findbugs.annotations.NonNull;
6060
import jenkins.model.Jenkins;
6161
import org.codehaus.groovy.control.CompilationUnit;
6262
import org.codehaus.groovy.control.CompilerConfiguration;
@@ -83,20 +83,20 @@
8383
public final class SecureGroovyScript extends AbstractDescribableImpl<SecureGroovyScript> implements Serializable {
8484

8585
private static final long serialVersionUID = -4347442065624787928L;
86-
private final @Nonnull String script;
86+
private final @NonNull String script;
8787
private final boolean sandbox;
8888
private final @CheckForNull List<ClasspathEntry> classpath;
8989
private transient boolean calledConfiguring;
9090

9191
static final Logger LOGGER = Logger.getLogger(SecureGroovyScript.class.getName());
9292

93-
@DataBoundConstructor public SecureGroovyScript(@Nonnull String script, boolean sandbox, @CheckForNull List<ClasspathEntry> classpath) {
93+
@DataBoundConstructor public SecureGroovyScript(@NonNull String script, boolean sandbox, @CheckForNull List<ClasspathEntry> classpath) {
9494
this.script = script;
9595
this.sandbox = sandbox;
9696
this.classpath = classpath;
9797
}
9898

99-
@Deprecated public SecureGroovyScript(@Nonnull String script, boolean sandbox) {
99+
@Deprecated public SecureGroovyScript(@NonNull String script, boolean sandbox) {
100100
this(script, sandbox, null);
101101
}
102102

@@ -105,15 +105,15 @@ private Object readResolve() {
105105
return this;
106106
}
107107

108-
public @Nonnull String getScript() {
108+
public @NonNull String getScript() {
109109
return script;
110110
}
111111

112112
public boolean isSandbox() {
113113
return sandbox;
114114
}
115115

116-
public @Nonnull List<ClasspathEntry> getClasspath() {
116+
public @NonNull List<ClasspathEntry> getClasspath() {
117117
return classpath != null ? classpath : Collections.<ClasspathEntry>emptyList();
118118
}
119119

@@ -196,7 +196,7 @@ private static void cleanUpClass(Class<?> clazz, Set<ClassLoader> encounteredLoa
196196

197197
// TODO copied with modifications from CpsFlowExecution; need to find a way to share commonalities
198198

199-
private static void cleanUpGlobalClassValue(@Nonnull ClassLoader loader) throws Exception {
199+
private static void cleanUpGlobalClassValue(@NonNull ClassLoader loader) throws Exception {
200200
Class<?> classInfoC = Class.forName("org.codehaus.groovy.reflection.ClassInfo");
201201
// TODO switch to MethodHandle for speed
202202
Field globalClassValueF = classInfoC.getDeclaredField("globalClassValue");
@@ -247,7 +247,7 @@ private static void cleanUpGlobalClassValue(@Nonnull ClassLoader loader) throws
247247
}
248248
}
249249

250-
private static void cleanUpGlobalClassSet(@Nonnull Class<?> clazz) throws Exception {
250+
private static void cleanUpGlobalClassSet(@NonNull Class<?> clazz) throws Exception {
251251
Class<?> classInfoC = Class.forName("org.codehaus.groovy.reflection.ClassInfo"); // or just ClassInfo.class, but unclear whether this will always be there
252252
Field globalClassSetF = classInfoC.getDeclaredField("globalClassSet");
253253
globalClassSetF.setAccessible(true);
@@ -279,7 +279,7 @@ private static void cleanUpGlobalClassSet(@Nonnull Class<?> clazz) throws Except
279279
}
280280
}
281281

282-
private static void cleanUpClassHelperCache(@Nonnull Class<?> clazz) throws Exception {
282+
private static void cleanUpClassHelperCache(@NonNull Class<?> clazz) throws Exception {
283283
Field classCacheF = Class.forName("org.codehaus.groovy.ast.ClassHelper$ClassHelperCache").getDeclaredField("classCache");
284284
classCacheF.setAccessible(true);
285285
Object classCache = classCacheF.get(null);
@@ -289,7 +289,7 @@ private static void cleanUpClassHelperCache(@Nonnull Class<?> clazz) throws Exce
289289
classCache.getClass().getMethod("remove", Object.class).invoke(classCache, clazz);
290290
}
291291

292-
private static void cleanUpObjectStreamClassCaches(@Nonnull Class<?> clazz) throws Exception {
292+
private static void cleanUpObjectStreamClassCaches(@NonNull Class<?> clazz) throws Exception {
293293
Class<?> cachesC = Class.forName("java.io.ObjectStreamClass$Caches");
294294
for (String cacheFName : new String[] {"localDescs", "reflectors"}) {
295295
Field cacheF = cachesC.getDeclaredField(cacheFName);

0 commit comments

Comments
 (0)