SLING-7798 Switch from JSR-305 annotations to JetBrains Nullable/NotNull annotations
diff --git a/pom.xml b/pom.xml
index 8129281..7e8a759 100644
--- a/pom.xml
+++ b/pom.xml
@@ -94,9 +94,10 @@
             <artifactId>osgi.core</artifactId>
         </dependency>
         <dependency>
-            <groupId>com.google.code.findbugs</groupId>
-            <artifactId>jsr305</artifactId>
-            <version>2.0.1</version>
+            <groupId>org.jetbrains</groupId>
+            <artifactId>annotations</artifactId>
+            <version>16.0.2</version>
+            <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>org.apache.felix</groupId>
diff --git a/src/main/java/org/apache/sling/jobs/Job.java b/src/main/java/org/apache/sling/jobs/Job.java
index 5c55a71..7005b7e 100644
--- a/src/main/java/org/apache/sling/jobs/Job.java
+++ b/src/main/java/org/apache/sling/jobs/Job.java
@@ -21,9 +21,8 @@
 
 import java.util.Map;
 
-import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
-
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
 import org.osgi.annotation.versioning.ProviderType;
 
 /**
@@ -53,14 +52,14 @@
      * The job queue. - immutable.
      * @return The job queue name
      */
-    @Nonnull
+    @NotNull
     Types.JobQueue getQueue();
 
     /**
      * Unique job ID. immutable.
      * @return The unique job ID.
      */
-    @Nonnull
+    @NotNull
     String getId();
 
 
@@ -69,13 +68,13 @@
      * to accept.
      * @return the job type.
      */
-    @Nonnull
+    @NotNull
     Types.JobType getJobType();
 
     /**
      * @return a map of all properties.
      */
-    @Nonnull
+    @NotNull
     Map<String,Object> getProperties();
 
     /**
@@ -109,14 +108,14 @@
      * Get the job state
      * @return the job state.
      */
-    @Nonnull
+    @NotNull
     JobState getJobState();
 
     /**
      * Set the new state.
      * @param newState the new state.
      */
-    void setState(@Nonnull JobState newState);
+    void setState(@NotNull JobState newState);
 
 
     /**
@@ -138,7 +137,7 @@
      *
      * @return a Job update builder.
      */
-    @Nonnull
+    @NotNull
     JobUpdateBuilder newJobUpdateBuilder();
 
 
@@ -153,7 +152,7 @@
      * Set the current job controller.
      * @param  jobController the job controller.
      */
-    void setJobController(@Nonnull JobController jobController);
+    void setJobController(@NotNull JobController jobController);
 
 
     /**
diff --git a/src/main/java/org/apache/sling/jobs/JobBuilder.java b/src/main/java/org/apache/sling/jobs/JobBuilder.java
index cabfd4f..406eb21 100644
--- a/src/main/java/org/apache/sling/jobs/JobBuilder.java
+++ b/src/main/java/org/apache/sling/jobs/JobBuilder.java
@@ -19,11 +19,10 @@
 package org.apache.sling.jobs;
 
 
+import org.jetbrains.annotations.NotNull;
 import org.osgi.annotation.versioning.ProviderType;
 
-import javax.annotation.Nonnull;
 import java.util.Map;
-
 /**
  * A JobBuilder allows users of the JobSystem to modify the properties of the Job and submit it for processing.
  */
@@ -35,14 +34,14 @@
      * @param props The properties of the job. All values must be {@code java.io.Serializable}.
      * @return The job builder to continue building.
      */
-    @Nonnull
-    JobBuilder addProperties(@Nonnull Map<String, Object> props);
+    @NotNull
+    JobBuilder addProperties(@NotNull Map<String, Object> props);
 
     /**
      * Add the job for processing.
      * @return The job or <code>null</code>
      */
-    @Nonnull
+    @NotNull
     Job add();
 
 }
diff --git a/src/main/java/org/apache/sling/jobs/JobConsumer.java b/src/main/java/org/apache/sling/jobs/JobConsumer.java
index af808db..cbe0685 100644
--- a/src/main/java/org/apache/sling/jobs/JobConsumer.java
+++ b/src/main/java/org/apache/sling/jobs/JobConsumer.java
@@ -19,10 +19,9 @@
 package org.apache.sling.jobs;
 
 
+import org.jetbrains.annotations.NotNull;
 import org.osgi.annotation.versioning.ProviderType;
 
-import javax.annotation.Nonnull;
-
 /**
  * Components that implement JobConsumers are registered with the Job Sub System by an OSGi Whiteboard pattern. Once
  * registered the component will be offered jobs matching the job types set as the OSGi property JobConsumer.JOB_TYPES.
@@ -45,6 +44,6 @@
      * @param callback called when the job is completed.
      * @throws RuntimeException or any subclass when the Job offered in initialState cant be accepted for execution.
      */
-    @Nonnull
-    void execute(@Nonnull Job initialState, @Nonnull JobUpdateListener listener, @Nonnull JobCallback callback);
+    @NotNull
+    void execute(@NotNull Job initialState, @NotNull JobUpdateListener listener, @NotNull JobCallback callback);
 }
diff --git a/src/main/java/org/apache/sling/jobs/JobManager.java b/src/main/java/org/apache/sling/jobs/JobManager.java
index c0eaa60..8494179 100644
--- a/src/main/java/org/apache/sling/jobs/JobManager.java
+++ b/src/main/java/org/apache/sling/jobs/JobManager.java
@@ -18,9 +18,8 @@
  */
 package org.apache.sling.jobs;
 
-import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
-
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
 import org.osgi.annotation.versioning.ProviderType;
 
 /**
@@ -40,8 +39,8 @@
      *                 process the job.
      * @return A job builder
      */
-    @Nonnull
-    JobBuilder newJobBuilder(@Nonnull Types.JobQueue queue, @Nonnull Types.JobType jobType);
+    @NotNull
+    JobBuilder newJobBuilder(@NotNull Types.JobQueue queue, @NotNull Types.JobType jobType);
 
     /**
      * Return a job based on the unique id.
@@ -54,7 +53,7 @@
      */
 
     @Nullable
-    Job getJobById(@Nonnull String jobId);
+    Job getJobById(@NotNull String jobId);
 
 
     /**
@@ -79,7 +78,7 @@
      *                    must match the template (AND query).
      * @return A job or <code>null</code>
      *    @Nullable
-     * Job getJob(@Nonnull Types.JobQueue queue, @Nonnull Map<String, Object> template);
+     * Job getJob(@NotNull Types.JobQueue queue, @NotNull Map<String, Object> template);
      *
      */
 
@@ -128,8 +127,8 @@
      *                    must match the template (AND query). By providing several maps, different filters
      *                    are possible (OR query).
      * @return A collection of jobs - the collection might be empty.
-     *    @Nonnull
-     *  Collection<Job> findJobs(@Nonnull QueryType type, @Nonnull Types.JobQueue queue, long limit, @Nullable Map<String, Object>... templates);
+     *    @NotNull
+     *  Collection<Job> findJobs(@NotNull QueryType type, @NotNull Types.JobQueue queue, long limit, @Nullable Map<String, Object>... templates);
      */
 
     /**
@@ -139,7 +138,7 @@
      * permanently failed or being retried.
      * @param jobId the job id to stop.
      */
-    void stopJobById(@Nonnull String jobId);
+    void stopJobById(@NotNull String jobId);
 
     /**
      * Aborts a job by sending an abort message, may or may not be successful.
@@ -149,7 +148,7 @@
      * @return <code>true</code> if the job could be removed or does not exist anymore.
      *         <code>false</code> if the job is not know to the job manager, however the abort message should be sent anyway.
      */
-    boolean abortJob(@Nonnull String jobId);
+    boolean abortJob(@NotNull String jobId);
 
 
     /**
@@ -161,7 +160,7 @@
      * @return If the job is requeued, the new job object otherwise <code>null</code>
      */
     @Nullable
-    Job retryJobById(@Nonnull String jobId);
+    Job retryJobById(@NotNull String jobId);
 
 
 }
diff --git a/src/main/java/org/apache/sling/jobs/JobTypeValve.java b/src/main/java/org/apache/sling/jobs/JobTypeValve.java
index 3be4f34..a4a1efa 100644
--- a/src/main/java/org/apache/sling/jobs/JobTypeValve.java
+++ b/src/main/java/org/apache/sling/jobs/JobTypeValve.java
@@ -18,10 +18,9 @@
  */
 package org.apache.sling.jobs;
 
+import org.jetbrains.annotations.NotNull;
 import org.osgi.annotation.versioning.ProviderType;
 
-import javax.annotation.Nonnull;
-
 /**
  * An interface to allow a component, normally a JobConsumer to inspect a JobType and indicate that
  * it can perform further actions on it. JobTypeValves are used in place of static JobType declarations.
@@ -35,5 +34,5 @@
      * @param jobType the job type.
      * @return true if can be processed.
      */
-    boolean accept(@Nonnull Types.JobType jobType);
+    boolean accept(@NotNull Types.JobType jobType);
 }
diff --git a/src/main/java/org/apache/sling/jobs/JobUpdate.java b/src/main/java/org/apache/sling/jobs/JobUpdate.java
index 4e5bd8e..aa0ea7e 100644
--- a/src/main/java/org/apache/sling/jobs/JobUpdate.java
+++ b/src/main/java/org/apache/sling/jobs/JobUpdate.java
@@ -20,9 +20,8 @@
 
 import java.util.Map;
 
-import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
-
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
 import org.osgi.annotation.versioning.ProviderType;
 
 /**
@@ -65,7 +64,7 @@
      * execute the Job.
      * @return the job type.
      */
-    @Nonnull
+    @NotNull
     Types.JobType getJobType();
 
     enum JobUpdateCommand {
@@ -85,7 +84,7 @@
     /**
      * @return the type of update.
      */
-    @Nonnull
+    @NotNull
     JobUpdateCommand  getCommand();
 
 
@@ -93,21 +92,21 @@
      * The job queue. - immutable.
      * @return The job queue
      */
-    @Nonnull
+    @NotNull
     Types.JobQueue getQueue();
 
     /**
      * Unique job ID. immutable.
      * @return The unique job ID.
      */
-    @Nonnull
+    @NotNull
     String getId();
 
     /**
      *
      * @return the new state of the job, may not have changed from the old state.
      */
-    @Nonnull
+    @NotNull
     Job.JobState getState();
 
     enum JobPropertyAction {
@@ -119,7 +118,7 @@
      * Property types cant be changed in 1 message.
      * @return the map of property changes, will be <code>null</code> if the update message does not contain property changes.
      */
-    @Nonnull
+    @NotNull
     Map<String, Object> getProperties();
 
     /**
diff --git a/src/main/java/org/apache/sling/jobs/JobUpdateBuilder.java b/src/main/java/org/apache/sling/jobs/JobUpdateBuilder.java
index e4c938d..62eb294 100644
--- a/src/main/java/org/apache/sling/jobs/JobUpdateBuilder.java
+++ b/src/main/java/org/apache/sling/jobs/JobUpdateBuilder.java
@@ -19,22 +19,21 @@
 
 package org.apache.sling.jobs;
 
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
 import org.osgi.annotation.versioning.ProviderType;
 
-import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
 import java.util.Map;
-
 /**
  * Create a job update ading properties and building.
  */
 @ProviderType
 public interface JobUpdateBuilder {
 
-    @Nonnull
-    JobUpdateBuilder command(@Nonnull JobUpdate.JobUpdateCommand command);
+    @NotNull
+    JobUpdateBuilder command(@NotNull JobUpdate.JobUpdateCommand command);
 
-    @Nonnull
+    @NotNull
     JobUpdate build();
 
     /**
@@ -43,9 +42,9 @@
      * @param value the value of the property which may be null. To remove the property set the value to JobUpdate.JobPropertyAction.REMOVE.
      * @return this JobBuilder instance.
      */
-    @Nonnull
-    JobUpdateBuilder put(@Nonnull String name, @Nullable Object value);
+    @NotNull
+    JobUpdateBuilder put(@NotNull String name, @Nullable Object value);
 
-    @Nonnull
-    JobUpdateBuilder putAll(@Nonnull Map<String, Object> properties);
+    @NotNull
+    JobUpdateBuilder putAll(@NotNull Map<String, Object> properties);
 }
diff --git a/src/main/java/org/apache/sling/jobs/JobUpdateListener.java b/src/main/java/org/apache/sling/jobs/JobUpdateListener.java
index 3e6e90d..9afd147 100644
--- a/src/main/java/org/apache/sling/jobs/JobUpdateListener.java
+++ b/src/main/java/org/apache/sling/jobs/JobUpdateListener.java
@@ -18,10 +18,9 @@
  */
 package org.apache.sling.jobs;
 
+import org.jetbrains.annotations.NotNull;
 import org.osgi.annotation.versioning.ProviderType;
 
-import javax.annotation.Nonnull;
-
 /**
  * Listens for JobUpdate messages.
  * Examples of a JobUpdateListener include implementations of a Job that consumes JobUpdateMessages, or JobConsumers that execute a Job.
@@ -33,5 +32,5 @@
      * Update the job state with a message.
      * @param update update message.
      */
-    void update(@Nonnull JobUpdate update);
+    void update(@NotNull JobUpdate update);
 }
diff --git a/src/main/java/org/apache/sling/jobs/impl/JobBuilderImpl.java b/src/main/java/org/apache/sling/jobs/impl/JobBuilderImpl.java
index 8450718..4839e3b 100644
--- a/src/main/java/org/apache/sling/jobs/impl/JobBuilderImpl.java
+++ b/src/main/java/org/apache/sling/jobs/impl/JobBuilderImpl.java
@@ -21,12 +21,11 @@
 import java.util.HashMap;
 import java.util.Map;
 
-import javax.annotation.Nonnull;
-
 import org.apache.sling.jobs.Job;
 import org.apache.sling.jobs.JobBuilder;
 import org.apache.sling.jobs.Types;
 import org.apache.sling.jobs.impl.spi.JobStarter;
+import org.jetbrains.annotations.NotNull;
 
 /**
  * Provides an implementation of a JobBuilder.
@@ -49,14 +48,14 @@
     }
 
 
-    @Nonnull
+    @NotNull
     @Override
-    public JobBuilder addProperties(@Nonnull Map<String, Object> props) {
+    public JobBuilder addProperties(@NotNull Map<String, Object> props) {
         this.properties.putAll(props);
         return this;
     }
 
-    @Nonnull
+    @NotNull
     @Override
     public Job add() {
         return jobStarter.start(new JobImpl(topic, id, jobType, properties));
diff --git a/src/main/java/org/apache/sling/jobs/impl/JobImpl.java b/src/main/java/org/apache/sling/jobs/impl/JobImpl.java
index be965d2..73f9d92 100644
--- a/src/main/java/org/apache/sling/jobs/impl/JobImpl.java
+++ b/src/main/java/org/apache/sling/jobs/impl/JobImpl.java
@@ -21,15 +21,14 @@
 import java.util.HashMap;
 import java.util.Map;
 
-import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
-
 import org.apache.sling.jobs.Job;
 import org.apache.sling.jobs.JobController;
 import org.apache.sling.jobs.JobUpdate;
 import org.apache.sling.jobs.JobUpdateBuilder;
 import org.apache.sling.jobs.JobUpdateListener;
 import org.apache.sling.jobs.Types;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
 
 /**
  * JobImpl is a data object to hold the current state of the job in the current JVM as loaded into memory.
@@ -50,7 +49,7 @@
     private JobController jobController;
     private Types.JobType jobType;
 
-    public JobImpl(@Nonnull Types.JobQueue jobQueue, @Nonnull String id, @Nonnull Types.JobType jobType, @Nonnull Map<String, Object> properties) {
+    public JobImpl(@NotNull Types.JobQueue jobQueue, @NotNull String id, @NotNull Types.JobType jobType, @NotNull Map<String, Object> properties) {
         this.jobQueue = jobQueue;
         this.jobType = jobType;
         this.id = id;
@@ -67,25 +66,25 @@
         updateProperties(update.getProperties());
     }
 
-    @Nonnull
+    @NotNull
     @Override
     public Types.JobQueue getQueue() {
         return jobQueue;
     }
 
-    @Nonnull
+    @NotNull
     @Override
     public String getId() {
         return id;
     }
 
-    @Nonnull
+    @NotNull
     @Override
     public Types.JobType getJobType() {
         return jobType;
     }
 
-    @Nonnull
+    @NotNull
     @Override
     public Map<String, Object> getProperties() {
         return properties;
@@ -111,14 +110,14 @@
         return createdAt;
     }
 
-    @Nonnull
+    @NotNull
     @Override
     public JobState getJobState() {
         return jobState;
     }
 
     @Override
-    public void setState(@Nonnull JobState newState) {
+    public void setState(@NotNull JobState newState) {
         jobState = newState;
     }
 
@@ -141,7 +140,7 @@
     }
 
     @Override
-    public void setJobController(@Nonnull JobController jobController) {
+    public void setJobController(@NotNull JobController jobController) {
         this.jobController = jobController;
     }
 
@@ -155,7 +154,7 @@
      * @param jobUpdate job update.
      */
     @Override
-    public void update(@Nonnull JobUpdate jobUpdate) {
+    public void update(@NotNull JobUpdate jobUpdate) {
         if  ( id.equals(jobUpdate.getId()) && ( jobQueue == Types.ANY_JOB_QUEUE || jobQueue.equals(jobUpdate.getQueue()))) {
             // Start Job commands always go onto a queue and dont expire.
             if ( jobUpdate.getCommand() != JobUpdate.JobUpdateCommand.START_JOB && jobUpdate.expires() < System.currentTimeMillis()) {
@@ -206,7 +205,7 @@
      * Update the properties taking into account any PropertyActions required.
      * @param properties the update properties.
      */
-    private void updateProperties(@Nonnull Map<String, Object> properties) {
+    private void updateProperties(@NotNull Map<String, Object> properties) {
         if ( properties == null ) {
             throw new IllegalArgumentException("Properties cant be null.");
         }
@@ -227,7 +226,7 @@
      * Update the jobstate data for the job.
      * @param jobUpdate
      */
-    private void updateState(@Nonnull JobUpdate jobUpdate) {
+    private void updateState(@NotNull JobUpdate jobUpdate) {
         retryCount = jobUpdate.getRetryCount();
         jobType = jobUpdate.getJobType();
         numberOfRetries = jobUpdate.getNumberOfRetries();
@@ -242,7 +241,7 @@
      * Get a JobUpdateBuilder for this Job.
      * @return the job update builder.
      */
-    @Nonnull
+    @NotNull
     @Override
     public JobUpdateBuilder newJobUpdateBuilder() {
         return new JobUpdateBuilderImpl(this);
diff --git a/src/main/java/org/apache/sling/jobs/impl/JobManagerImpl.java b/src/main/java/org/apache/sling/jobs/impl/JobManagerImpl.java
index 0850bd7..62e1a12 100644
--- a/src/main/java/org/apache/sling/jobs/impl/JobManagerImpl.java
+++ b/src/main/java/org/apache/sling/jobs/impl/JobManagerImpl.java
@@ -18,9 +18,6 @@
  */
 package org.apache.sling.jobs.impl;
 
-import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
-
 import org.apache.sling.jobs.Job;
 import org.apache.sling.jobs.JobBuilder;
 import org.apache.sling.jobs.JobManager;
@@ -29,6 +26,8 @@
 import org.apache.sling.jobs.Types;
 import org.apache.sling.jobs.impl.spi.JobStarter;
 import org.apache.sling.jobs.impl.spi.JobStorage;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
 
 /**
  * Implements a JobManager, storing Jobs in a JobStorage implementation.
@@ -60,20 +59,20 @@
         this.messageSender = messageSender;
     }
 
-    @Nonnull
+    @NotNull
     @Override
-    public JobBuilder newJobBuilder(@Nonnull Types.JobQueue queue, @Nonnull Types.JobType jobType) {
+    public JobBuilder newJobBuilder(@NotNull Types.JobQueue queue, @NotNull Types.JobType jobType) {
         return new JobBuilderImpl(this, queue, jobType);
     }
 
     @Nullable
     @Override
-    public Job getJobById(@Nonnull String jobId) {
+    public Job getJobById(@NotNull String jobId) {
         return jobStorage.get(jobId);
     }
 
     @Override
-    public void stopJobById(@Nonnull String jobId) {
+    public void stopJobById(@NotNull String jobId) {
         Job job = getJobById(jobId);
         if ( job != null) {
             messageSender.update(job.newJobUpdateBuilder().command(JobUpdate.JobUpdateCommand.STOP_JOB).build());
@@ -81,7 +80,7 @@
     }
 
     @Override
-    public boolean abortJob(@Nonnull String jobId) {
+    public boolean abortJob(@NotNull String jobId) {
         Job job = getJobById(jobId);
         if ( job != null) {
             messageSender.update(job.newJobUpdateBuilder().command(JobUpdate.JobUpdateCommand.ABORT_JOB).build());
@@ -94,7 +93,7 @@
 
     @Nullable
     @Override
-    public Job retryJobById(@Nonnull String jobId) {
+    public Job retryJobById(@NotNull String jobId) {
         Job job = getJobById(jobId);
         if (job != null) {
             messageSender.update(job.newJobUpdateBuilder().command(JobUpdate.JobUpdateCommand.RETRY_JOB).build());
@@ -112,7 +111,7 @@
 
 
     @Override
-    public void update(@Nonnull JobUpdate update) {
+    public void update(@NotNull JobUpdate update) {
         Job j = jobStorage.get(update.getId());
         if ( j instanceof JobUpdateListener ) {
             ((JobUpdateListener) j).update(update);
diff --git a/src/main/java/org/apache/sling/jobs/impl/JobQueueConsumerFactory.java b/src/main/java/org/apache/sling/jobs/impl/JobQueueConsumerFactory.java
index d4f9b41..1f3d8fe 100644
--- a/src/main/java/org/apache/sling/jobs/impl/JobQueueConsumerFactory.java
+++ b/src/main/java/org/apache/sling/jobs/impl/JobQueueConsumerFactory.java
@@ -23,8 +23,6 @@
 import java.util.Map;
 import java.util.Set;
 
-import javax.annotation.Nonnull;
-
 import org.apache.sling.jobs.Job;
 import org.apache.sling.jobs.JobCallback;
 import org.apache.sling.jobs.JobConsumer;
@@ -37,6 +35,7 @@
 import org.apache.sling.mom.RequeueMessageException;
 import org.apache.sling.mom.TopicManager;
 import org.apache.sling.mom.Types;
+import org.jetbrains.annotations.NotNull;
 import org.osgi.service.component.annotations.Activate;
 import org.osgi.service.component.annotations.Component;
 import org.osgi.service.component.annotations.ConfigurationPolicy;
@@ -91,7 +90,7 @@
 
         ((JobConsumer)jobManager).execute(job, new JobUpdateListener() {
             @Override
-            public void update(@Nonnull JobUpdate update) {
+            public void update(@NotNull JobUpdate update) {
                 if (update.getId() != job.getId() || !ALLOWED_COMMANDS.contains(update.getCommand())) {
 
                     throw new IllegalArgumentException("Not allowed to update other jobs or issue reserved commands when updating the state of a running job.");
diff --git a/src/main/java/org/apache/sling/jobs/impl/JobSubsystem.java b/src/main/java/org/apache/sling/jobs/impl/JobSubsystem.java
index bed86dc..f7860ea 100644
--- a/src/main/java/org/apache/sling/jobs/impl/JobSubsystem.java
+++ b/src/main/java/org/apache/sling/jobs/impl/JobSubsystem.java
@@ -27,9 +27,6 @@
 import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
 
-import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
-
 import org.apache.sling.jobs.Job;
 import org.apache.sling.jobs.JobBuilder;
 import org.apache.sling.jobs.JobCallback;
@@ -42,6 +39,8 @@
 import org.apache.sling.jobs.impl.storage.InMemoryJobStorage;
 import org.apache.sling.mom.QueueManager;
 import org.apache.sling.mom.TopicManager;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
 import org.osgi.framework.ServiceReference;
 import org.osgi.service.component.annotations.Activate;
 import org.osgi.service.component.annotations.Component;
@@ -94,31 +93,31 @@
     }
 
     // --- Job Manager.
-    @Nonnull
+    @NotNull
     @Override
-    public JobBuilder newJobBuilder(@Nonnull Types.JobQueue queue, @Nonnull Types.JobType jobType) {
+    public JobBuilder newJobBuilder(@NotNull Types.JobQueue queue, @NotNull Types.JobType jobType) {
         return manager.newJobBuilder(queue, jobType);
     }
 
     @Nullable
     @Override
-    public Job getJobById(@Nonnull String jobId) {
+    public Job getJobById(@NotNull String jobId) {
         return manager.getJobById(jobId);
     }
 
     @Override
-    public void stopJobById(@Nonnull String jobId) {
+    public void stopJobById(@NotNull String jobId) {
         manager.stopJobById(jobId);
     }
 
     @Override
-    public boolean abortJob(@Nonnull String jobId) {
+    public boolean abortJob(@NotNull String jobId) {
         return manager.abortJob(jobId);
     }
 
     @Nullable
     @Override
-    public Job retryJobById(@Nonnull String jobId) {
+    public Job retryJobById(@NotNull String jobId) {
         return manager.retryJobById(jobId);
     }
 
@@ -147,9 +146,9 @@
 
 
     // ------- job execution, invoked by JobQueueConsumerFactory.
-    @Nonnull
+    @NotNull
     @Override
-    public void execute(@Nonnull Job initialState, @Nonnull JobUpdateListener listener, @Nonnull JobCallback callback) {
+    public void execute(@NotNull Job initialState, @NotNull JobUpdateListener listener, @NotNull JobCallback callback) {
         // iterate over the entries. This should cause the entries to come out in natural key order
         // which should respect any priority applied to the Services via ServiceReference. (TODO: check that is the case)
         // TODO: add a Job controller to the job before executing.
@@ -205,7 +204,7 @@
 
 
         @Override
-        public boolean accept(@Nonnull Types.JobType jobType) {
+        public boolean accept(@NotNull Types.JobType jobType) {
             if ( consumer instanceof JobTypeValve) {
                 return ((JobTypeValve) consumer).accept(jobType);
             }
diff --git a/src/main/java/org/apache/sling/jobs/impl/JobUpdateBuilderImpl.java b/src/main/java/org/apache/sling/jobs/impl/JobUpdateBuilderImpl.java
index 5347b5c..96a2f62 100644
--- a/src/main/java/org/apache/sling/jobs/impl/JobUpdateBuilderImpl.java
+++ b/src/main/java/org/apache/sling/jobs/impl/JobUpdateBuilderImpl.java
@@ -22,12 +22,11 @@
 import java.util.HashMap;
 import java.util.Map;
 
-import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
-
 import org.apache.sling.jobs.Job;
 import org.apache.sling.jobs.JobUpdate;
 import org.apache.sling.jobs.JobUpdateBuilder;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
 
 /**
  */
@@ -42,12 +41,12 @@
      * Create a JobUpdateBuilder from a job.
      * @param job the job.
      */
-    public JobUpdateBuilderImpl(@Nonnull Job job) {
+    public JobUpdateBuilderImpl(@NotNull Job job) {
         this.job = job;
         this.jobId = null;
     }
 
-    public JobUpdateBuilderImpl(@Nonnull String jobId) {
+    public JobUpdateBuilderImpl(@NotNull String jobId) {
         this.jobId = jobId;
         this.job = null;
 
@@ -58,9 +57,9 @@
      * @param command the command.
      * @return this JobBuilder instance.
      */
-    @Nonnull
+    @NotNull
     @Override
-    public JobUpdateBuilder command(@Nonnull JobUpdate.JobUpdateCommand command) {
+    public JobUpdateBuilder command(@NotNull JobUpdate.JobUpdateCommand command) {
         this.command = command;
         return this;
     }
@@ -71,9 +70,9 @@
      * @param value the value of the property which may be null. To remove the property set the value to JobUpdate.JobPropertyAction.REMOVE.
      * @return this JobBuilder instance.
      */
-    @Nonnull
+    @NotNull
     @Override
-    public JobUpdateBuilder put(@Nonnull String name, @Nullable Object value) {
+    public JobUpdateBuilder put(@NotNull String name, @Nullable Object value) {
         if ( value == null) {
             this.updateProperties.put(name, JobUpdate.JobPropertyAction.REMOVE);
         } else {
@@ -82,9 +81,9 @@
         return this;
     }
 
-    @Nonnull
+    @NotNull
     @Override
-    public JobUpdateBuilder putAll(@Nonnull Map<String, Object> properties) {
+    public JobUpdateBuilder putAll(@NotNull Map<String, Object> properties) {
         this.updateProperties.putAll(properties);
         return this;
     }
@@ -94,7 +93,7 @@
      * Build the JobUpdate.
      * @return the JobUpdate.
      */
-    @Nonnull
+    @NotNull
     @Override
     public JobUpdate build() {
         if ( job != null) {
diff --git a/src/main/java/org/apache/sling/jobs/impl/JobUpdateImpl.java b/src/main/java/org/apache/sling/jobs/impl/JobUpdateImpl.java
index 5fb8394..210207d 100644
--- a/src/main/java/org/apache/sling/jobs/impl/JobUpdateImpl.java
+++ b/src/main/java/org/apache/sling/jobs/impl/JobUpdateImpl.java
@@ -22,13 +22,12 @@
 import java.util.HashMap;
 import java.util.Map;
 
-import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
-
 import org.apache.sling.jobs.Job;
 import org.apache.sling.jobs.JobUpdate;
 import org.apache.sling.jobs.Types;
 import org.apache.sling.jobs.impl.spi.MapValueAdapter;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
 
 /**
  * Represents messages sent to the Job via a message queue.
@@ -60,7 +59,7 @@
      * @param command the command
      * @param properties properties in the update message.
      */
-    public JobUpdateImpl(@Nonnull Job job, @Nonnull JobUpdateCommand command, @Nonnull Map<String, Object> properties) {
+    public JobUpdateImpl(@NotNull Job job, @NotNull JobUpdateCommand command, @NotNull Map<String, Object> properties) {
         if ( job == null ) {
             throw new IllegalArgumentException("Job argument cant be null");
         }
@@ -91,14 +90,14 @@
      * Create a JobUpdateImpl based on a inbound message in the form of a Map.
      * @param message a inbound message in map form.
      */
-    public JobUpdateImpl(@Nonnull Map<String, Object> message) {
+    public JobUpdateImpl(@NotNull Map<String, Object> message) {
         if ( message == null ) {
             throw new IllegalArgumentException("Message cant be null");
         }
         fromMapValue(message);
     }
 
-    public JobUpdateImpl(@Nonnull String jobId, @Nonnull JobUpdateCommand command) {
+    public JobUpdateImpl(@NotNull String jobId, @NotNull JobUpdateCommand command) {
         if ( jobId == null ) {
             throw new IllegalArgumentException("JobId argument cant be null");
         }
@@ -126,37 +125,37 @@
         return expires;
     }
 
-    @Nonnull
+    @NotNull
     @Override
     public Types.JobType getJobType() {
         return jobType;
     }
 
-    @Nonnull
+    @NotNull
     @Override
     public JobUpdateCommand getCommand() {
         return command;
     }
 
-    @Nonnull
+    @NotNull
     @Override
     public Types.JobQueue getQueue() {
         return jobQueue;
     }
 
-    @Nonnull
+    @NotNull
     @Override
     public String getId() {
         return id;
     }
 
-    @Nonnull
+    @NotNull
     @Override
     public Job.JobState getState() {
         return jobState;
     }
 
-    @Nonnull
+    @NotNull
     @Override
     public Map<String, Object> getProperties() {
         return properties;
@@ -221,7 +220,7 @@
     }
 
     @Override
-    @Nonnull
+    @NotNull
     public Object toMapValue() {
         final Map<String, Object> builder = new HashMap<>();
         builder.put("tp", jobQueue.toString());
diff --git a/src/main/java/org/apache/sling/jobs/impl/OutboundJobUpdateListener.java b/src/main/java/org/apache/sling/jobs/impl/OutboundJobUpdateListener.java
index 734bb2a..7327295 100644
--- a/src/main/java/org/apache/sling/jobs/impl/OutboundJobUpdateListener.java
+++ b/src/main/java/org/apache/sling/jobs/impl/OutboundJobUpdateListener.java
@@ -18,12 +18,11 @@
  */
 package org.apache.sling.jobs.impl;
 
-import javax.annotation.Nonnull;
-
 import org.apache.sling.jobs.JobUpdate;
 import org.apache.sling.jobs.JobUpdateListener;
 import org.apache.sling.mom.QueueManager;
 import org.apache.sling.mom.TopicManager;
+import org.jetbrains.annotations.NotNull;
 
 /**
  * Sends messages out to JMS Queues or topics. Normally called by the local JobManager Implementation.
@@ -48,7 +47,7 @@
 
 
     @Override
-    public void update(@Nonnull JobUpdate update) {
+    public void update(@NotNull JobUpdate update) {
         if ( active ) {
             switch(update.getCommand()) {
                 case START_JOB:
diff --git a/src/main/java/org/apache/sling/jobs/impl/Utils.java b/src/main/java/org/apache/sling/jobs/impl/Utils.java
index 6882303..f3880dd 100644
--- a/src/main/java/org/apache/sling/jobs/impl/Utils.java
+++ b/src/main/java/org/apache/sling/jobs/impl/Utils.java
@@ -28,10 +28,9 @@
 import java.util.Map;
 import java.util.concurrent.atomic.AtomicLong;
 
-import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
-
 import org.apache.sling.jobs.impl.spi.MapValueAdapter;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -49,7 +48,7 @@
      * Gets a string
      * @return
      */
-    @Nonnull
+    @NotNull
     private static String generateUniqueNamespace() {
         String macAddress = null;
         // get the MAC address of the primary interface, failing that use a fake.
@@ -88,8 +87,8 @@
         return  baseId;
     }
 
-    @Nonnull
-    private static String tohex(@Nonnull byte[] bytes) {
+    @NotNull
+    private static String tohex(@NotNull byte[] bytes) {
         StringBuilder sb = new StringBuilder();
         for( byte b : bytes) {
             sb.append(String.format("%02x",b));
@@ -101,7 +100,7 @@
      * Generate an ID based on the unique name of the jvm process and a counter.
      * @return a generated ID.
      */
-    @Nonnull
+    @NotNull
     public static String generateId() {
         try {
             return Utils.tohex(MessageDigest.getInstance("SHA1").digest((Utils.PROCESS_NAME+idCounter.incrementAndGet()).getBytes(UTF8)));
@@ -110,8 +109,8 @@
         }
     }
 
-    @Nonnull
-    public static Map<String, Object> toMapValue(@Nonnull Object msg) {
+    @NotNull
+    public static Map<String, Object> toMapValue(@NotNull Object msg) {
         if (msg instanceof Map) {
             //noinspection unchecked
             return (Map<String, Object>) msg;
@@ -122,8 +121,8 @@
     }
 
 
-    @Nonnull
-    public static <T> T getRequired(@Nonnull Map<String, Object> m, @Nonnull String name) {
+    @NotNull
+    public static <T> T getRequired(@NotNull Map<String, Object> m, @NotNull String name) {
         if (m.containsKey(name)) {
             //noinspection unchecked
             if ( m.get(name) != null) {
@@ -134,7 +133,7 @@
     }
 
     @Nullable
-    public static <T> T getOptional(@Nonnull Map<String, Object> m, @Nonnull String name, @Nullable T defaultValue) {
+    public static <T> T getOptional(@NotNull Map<String, Object> m, @NotNull String name, @Nullable T defaultValue) {
         if (m.containsKey(name)) {
             //noinspection unchecked
             Object o = m.get(name);
diff --git a/src/main/java/org/apache/sling/jobs/impl/spi/JobStorage.java b/src/main/java/org/apache/sling/jobs/impl/spi/JobStorage.java
index bd421ab..32e852f 100644
--- a/src/main/java/org/apache/sling/jobs/impl/spi/JobStorage.java
+++ b/src/main/java/org/apache/sling/jobs/impl/spi/JobStorage.java
@@ -20,11 +20,10 @@
 package org.apache.sling.jobs.impl.spi;
 
 import org.apache.sling.jobs.Job;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
 import org.osgi.annotation.versioning.ProviderType;
 
-import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
-
 /**
  * Provides JobStorage local to the JVM. Implementation may or may not decide to persist over restarts, page, etc
  */
@@ -38,15 +37,15 @@
      * @return the job or null of the job doesn't exist.
      */
     @Nullable
-    Job get(@Nonnull String jobId);
+    Job get(@NotNull String jobId);
 
     /**
      * Put a Job into the Job Storage.
      * @param job the job.
      * @return the job just added.
      */
-    @Nonnull
-    Job put(@Nonnull Job job);
+    @NotNull
+    Job put(@NotNull Job job);
 
     /**
      * Remove the Job
@@ -54,7 +53,7 @@
      * @return the job removed or null if not present.
      */
     @Nullable
-    Job remove(@Nonnull String jobId);
+    Job remove(@NotNull String jobId);
 
     /**
      * Remove the Job, returning the job removed.
@@ -62,7 +61,7 @@
      * @return the job removed, if the the job was present, otherwise null.
      */
     @Nullable
-    Job remove(@Nonnull Job job);
+    Job remove(@NotNull Job job);
 
     /**
      * Dispose of the JobStorage.
diff --git a/src/main/java/org/apache/sling/jobs/impl/storage/InMemoryJobStorage.java b/src/main/java/org/apache/sling/jobs/impl/storage/InMemoryJobStorage.java
index 222e339..574e321 100644
--- a/src/main/java/org/apache/sling/jobs/impl/storage/InMemoryJobStorage.java
+++ b/src/main/java/org/apache/sling/jobs/impl/storage/InMemoryJobStorage.java
@@ -20,12 +20,11 @@
 
 import org.apache.sling.jobs.Job;
 import org.apache.sling.jobs.impl.spi.JobStorage;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
 
-import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
-
 /**
  * An unbounded local JVM job store.
  */
@@ -36,14 +35,14 @@
 
     @Nullable
     @Override
-    public Job get(@Nonnull String jobId) {
+    public Job get(@NotNull String jobId) {
         check();
         return store.get(jobId);
     }
 
-    @Nonnull
+    @NotNull
     @Override
-    public Job put(@Nonnull Job job) {
+    public Job put(@NotNull Job job) {
         check();
         store.put(job.getId(), job);
         return job;
@@ -51,7 +50,7 @@
 
     @Nullable
     @Override
-    public Job remove(@Nonnull String jobId) {
+    public Job remove(@NotNull String jobId) {
         check();
         Job j = store.get(jobId);
         store.remove(jobId);
@@ -60,7 +59,7 @@
 
     @Nullable
     @Override
-    public Job remove(@Nonnull Job job) {
+    public Job remove(@NotNull Job job) {
         check();
         return remove(job.getId());
     }
diff --git a/src/main/java/org/apache/sling/jobs/package-info.java b/src/main/java/org/apache/sling/jobs/package-info.java
index 8fa9d1b..12de886 100644
--- a/src/main/java/org/apache/sling/jobs/package-info.java
+++ b/src/main/java/org/apache/sling/jobs/package-info.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-@Version("1.0.0")
+@Version("1.0.1")
 package org.apache.sling.jobs;
 
 import org.osgi.annotation.versioning.Version;