Skip to content
This repository was archived by the owner on Mar 3, 2026. It is now read-only.

Commit 42e42cb

Browse files
committed
kotlin: annotated public API with NonNull annotation fix jooby-project#822
1 parent 3113ca5 commit 42e42cb

21 files changed

+552
-9
lines changed

jooby/pom.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,12 @@
9494
</build>
9595

9696
<dependencies>
97+
<dependency>
98+
<groupId>com.google.code.findbugs</groupId>
99+
<artifactId>jsr305</artifactId>
100+
<scope>provided</scope>
101+
</dependency>
102+
97103
<!-- Logging System -->
98104
<dependency>
99105
<groupId>org.slf4j</groupId>

jooby/src/main/java/org/jooby/Asset.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,8 @@
211211
import com.google.common.io.BaseEncoding;
212212
import com.google.common.primitives.Longs;
213213

214+
import javax.annotation.Nonnull;
215+
214216
/**
215217
* Usually a public file/resource like javascript, css, images files, etc...
216218
* An asset consist of content type, stream and last modified since attributes, between others.
@@ -286,6 +288,7 @@ public MediaType type() {
286288
*
287289
* @return The asset name (without path).
288290
*/
291+
@Nonnull
289292
default String name() {
290293
String path = path();
291294
int slash = path.lastIndexOf('/');
@@ -302,17 +305,20 @@ default String name() {
302305
*
303306
* @return The asset requested path, includes the name.
304307
*/
308+
@Nonnull
305309
String path();
306310

307311
/**
308312
* @return URL representing the resource.
309313
*/
314+
@Nonnull
310315
URL resource();
311316

312317
/**
313318
* @return Generate a weak Etag using the {@link #path()}, {@link #lastModified()} and
314319
* {@link #length()}.
315320
*/
321+
@Nonnull
316322
default String etag() {
317323
StringBuilder b = new StringBuilder(32);
318324
b.append("W/\"");
@@ -340,10 +346,12 @@ default String etag() {
340346
* @return The content of this asset.
341347
* @throws Exception If content can't be read it.
342348
*/
349+
@Nonnull
343350
InputStream stream() throws Exception;
344351

345352
/**
346353
* @return Asset media type.
347354
*/
355+
@Nonnull
348356
MediaType type();
349357
}

jooby/src/main/java/org/jooby/Cookie.java

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,8 @@
210210
import org.jooby.funzy.Throwing;
211211
import org.jooby.internal.CookieImpl;
212212

213+
import javax.annotation.Nonnull;
214+
import javax.annotation.Nullable;
213215
import javax.crypto.Mac;
214216
import javax.crypto.spec.SecretKeySpec;
215217
import java.net.URLDecoder;
@@ -387,6 +389,7 @@ public Definition(final String name) {
387389
*
388390
* @return A new cookie.
389391
*/
392+
@Nonnull
390393
public Cookie toCookie() {
391394
return new CookieImpl(this);
392395
}
@@ -402,6 +405,7 @@ public String toString() {
402405
* @param name A cookie's name.
403406
* @return This definition.
404407
*/
408+
@Nonnull
405409
public Definition name(final String name) {
406410
this.name = requireNonNull(name, "A cookie name is required.");
407411
return this;
@@ -410,6 +414,7 @@ public Definition name(final String name) {
410414
/**
411415
* @return Cookie's name.
412416
*/
417+
@Nonnull
413418
public Optional<String> name() {
414419
return Optional.ofNullable(name);
415420
}
@@ -420,6 +425,7 @@ public Optional<String> name() {
420425
* @param value A value.
421426
* @return This definition.
422427
*/
428+
@Nonnull
423429
public Definition value(final String value) {
424430
this.value = requireNonNull(value, "A cookie value is required.");
425431
return this;
@@ -428,6 +434,7 @@ public Definition value(final String value) {
428434
/**
429435
* @return Cookie's value.
430436
*/
437+
@Nonnull
431438
public Optional<String> value() {
432439
if (Strings.isNullOrEmpty(value)) {
433440
return Optional.empty();
@@ -441,6 +448,7 @@ public Optional<String> value() {
441448
* @param domain Cookie's domain.
442449
* @return This definition.
443450
*/
451+
@Nonnull
444452
public Definition domain(final String domain) {
445453
this.domain = requireNonNull(domain, "A cookie domain is required.");
446454
return this;
@@ -449,6 +457,7 @@ public Definition domain(final String domain) {
449457
/**
450458
* @return A cookie's domain.
451459
*/
460+
@Nonnull
452461
public Optional<String> domain() {
453462
return Optional.ofNullable(domain);
454463
}
@@ -459,6 +468,7 @@ public Optional<String> domain() {
459468
* @param path Cookie's path.
460469
* @return This definition.
461470
*/
471+
@Nonnull
462472
public Definition path(final String path) {
463473
this.path = requireNonNull(path, "A cookie path is required.");
464474
return this;
@@ -467,6 +477,7 @@ public Definition path(final String path) {
467477
/**
468478
* @return Get cookie's path.
469479
*/
480+
@Nonnull
470481
public Optional<String> path() {
471482
return Optional.ofNullable(path);
472483
}
@@ -477,6 +488,7 @@ public Optional<String> path() {
477488
* @param comment A cookie's comment.
478489
* @return This definition.
479490
*/
491+
@Nonnull
480492
public Definition comment(final String comment) {
481493
this.comment = requireNonNull(comment, "A cookie comment is required.");
482494
return this;
@@ -485,6 +497,7 @@ public Definition comment(final String comment) {
485497
/**
486498
* @return Cookie's comment.
487499
*/
500+
@Nonnull
488501
public Optional<String> comment() {
489502
return Optional.ofNullable(comment);
490503
}
@@ -495,6 +508,7 @@ public Optional<String> comment() {
495508
* @param httpOnly True, for HTTP Only.
496509
* @return This definition.
497510
*/
511+
@Nonnull
498512
public Definition httpOnly(final boolean httpOnly) {
499513
this.httpOnly = httpOnly;
500514
return this;
@@ -503,6 +517,7 @@ public Definition httpOnly(final boolean httpOnly) {
503517
/**
504518
* @return HTTP only flag.
505519
*/
520+
@Nonnull
506521
public Optional<Boolean> httpOnly() {
507522
return Optional.ofNullable(httpOnly);
508523
}
@@ -513,6 +528,7 @@ public Optional<Boolean> httpOnly() {
513528
* @param secure True, ensure that the session cookie is only transmitted via HTTPS.
514529
* @return This definition.
515530
*/
531+
@Nonnull
516532
public Definition secure(final boolean secure) {
517533
this.secure = secure;
518534
return this;
@@ -521,6 +537,7 @@ public Definition secure(final boolean secure) {
521537
/**
522538
* @return True, ensure that the session cookie is only transmitted via HTTPS.
523539
*/
540+
@Nonnull
524541
public Optional<Boolean> secure() {
525542
return Optional.ofNullable(secure);
526543
}
@@ -543,6 +560,7 @@ public Optional<Boolean> secure() {
543560
* means the cookie is not stored; if zero, deletes the cookie.
544561
* @return This definition.
545562
*/
563+
@Nonnull
546564
public Definition maxAge(final int maxAge) {
547565
this.maxAge = maxAge;
548566
return this;
@@ -564,6 +582,7 @@ public Definition maxAge(final int maxAge) {
564582
*
565583
* @return Cookie's max age in seconds.
566584
*/
585+
@Nonnull
567586
public Optional<Integer> maxAge() {
568587
return Optional.ofNullable(maxAge);
569588
}
@@ -608,6 +627,7 @@ public class Signature {
608627
* @param secret A secret key.
609628
* @return A signed value.
610629
*/
630+
@Nonnull
611631
public static String sign(final String value, final String secret) {
612632
requireNonNull(value, "A value is required.");
613633
requireNonNull(secret, "A secret is required.");
@@ -628,8 +648,9 @@ public static String sign(final String value, final String secret) {
628648
*
629649
* @param value A signed value.
630650
* @param secret A secret key.
631-
* @return A new signed value.
651+
* @return A new signed value or null.
632652
*/
653+
@Nullable
633654
public static String unsign(final String value, final String secret) {
634655
requireNonNull(value, "A value is required.");
635656
requireNonNull(secret, "A secret is required.");
@@ -659,21 +680,25 @@ public static boolean valid(final String value, final String secret) {
659680
/**
660681
* @return Cookie's name.
661682
*/
683+
@Nonnull
662684
String name();
663685

664686
/**
665687
* @return Cookie's value.
666688
*/
689+
@Nonnull
667690
Optional<String> value();
668691

669692
/**
670693
* @return An optional comment.
671694
*/
695+
@Nonnull
672696
Optional<String> comment();
673697

674698
/**
675699
* @return Cookie's domain.
676700
*/
701+
@Nonnull
677702
Optional<String> domain();
678703

679704
/**
@@ -692,6 +717,7 @@ public static boolean valid(final String value, final String secret) {
692717
/**
693718
* @return Cookie's path.
694719
*/
720+
@Nonnull
695721
Optional<String> path();
696722

697723
/**
@@ -710,5 +736,6 @@ public static boolean valid(final String value, final String secret) {
710736
/**
711737
* @return Encode the cookie.
712738
*/
739+
@Nonnull
713740
String encode();
714741
}

jooby/src/main/java/org/jooby/Deferred.java

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,7 @@
205205

206206
import static java.util.Objects.requireNonNull;
207207

208+
import javax.annotation.Nonnull;
208209
import java.util.Optional;
209210
import java.util.concurrent.Callable;
210211
import java.util.concurrent.Executor;
@@ -331,7 +332,7 @@ public class Deferred extends Result {
331332
* @author edgar
332333
* @since 0.10.0
333334
*/
334-
public static interface Initializer0 {
335+
public interface Initializer0 {
335336

336337
/**
337338
* Run the initializer block.
@@ -348,7 +349,7 @@ public static interface Initializer0 {
348349
* @author edgar
349350
* @since 0.10.0
350351
*/
351-
public static interface Initializer {
352+
public interface Initializer {
352353

353354
/**
354355
* Run the initializer block.
@@ -366,7 +367,7 @@ public static interface Initializer {
366367
* @author edgar
367368
* @since 0.10.0
368369
*/
369-
public static interface Handler {
370+
public interface Handler {
370371
void handle(Result result, Throwable exception);
371372
}
372373

@@ -432,6 +433,7 @@ public Deferred() {
432433
* @param value Resolved value.
433434
*/
434435
@Override
436+
@Nonnull
435437
public Result set(final Object value) {
436438
if (value instanceof Throwable) {
437439
reject((Throwable) value);
@@ -447,6 +449,7 @@ public Result set(final Object value) {
447449
*
448450
* @return Executor to use or fallback to global/application executor.
449451
*/
452+
@Nonnull
450453
public Optional<String> executor() {
451454
return Optional.ofNullable(executor);
452455
}
@@ -456,6 +459,7 @@ public Optional<String> executor() {
456459
*
457460
* @return Name of the caller thread (thread that creates this deferred object).
458461
*/
462+
@Nonnull
459463
public String callerThread() {
460464
return callerThread;
461465
}
@@ -466,6 +470,7 @@ public String callerThread() {
466470
*
467471
* @param value A value for this deferred.
468472
*/
473+
@Nonnull
469474
public void resolve(final Object value) {
470475
if (value == null) {
471476
handler.handle(null, null);
@@ -539,6 +544,7 @@ public void handler(final Request req, final Handler handler) throws Exception {
539544
* @param handler Application block.
540545
* @return A new deferred handler.
541546
*/
547+
@Nonnull
542548
public static Deferred deferred(final Route.OneArgHandler handler) {
543549
return deferred(null, handler);
544550
}
@@ -574,6 +580,7 @@ public static Deferred deferred(final Route.OneArgHandler handler) {
574580
* @param handler Application block.
575581
* @return A new deferred.
576582
*/
583+
@Nonnull
577584
public static Deferred deferred(final Route.ZeroArgHandler handler) {
578585
return deferred(null, handler);
579586
}
@@ -599,6 +606,7 @@ public static Deferred deferred(final Route.ZeroArgHandler handler) {
599606
* @param handler Application block.
600607
* @return A new deferred handler.
601608
*/
609+
@Nonnull
602610
public static Deferred deferred(final String executor, final Route.ZeroArgHandler handler) {
603611
return deferred(executor, req -> handler.handle());
604612
}
@@ -624,6 +632,7 @@ public static Deferred deferred(final String executor, final Route.ZeroArgHandle
624632
* @param handler Application block.
625633
* @return A new deferred handler.
626634
*/
635+
@Nonnull
627636
public static Deferred deferred(final String executor, final Route.OneArgHandler handler) {
628637
return new Deferred(executor, (req, deferred) -> {
629638
try {

0 commit comments

Comments
 (0)