Merge branch 'master' of github.com:apache/sling-org-apache-sling-resourceresolver
diff --git a/pom.xml b/pom.xml
index bb3fcb0..a9d1fd6 100644
--- a/pom.xml
+++ b/pom.xml
@@ -148,9 +148,9 @@
             <scope>provided</scope>
         </dependency>
         <dependency>
-            <groupId>com.google.code.findbugs</groupId>
-            <artifactId>jsr305</artifactId>
-            <version>3.0.0</version>
+            <groupId>org.jetbrains</groupId>
+            <artifactId>annotations</artifactId>
+            <version>16.0.2</version>
             <scope>provided</scope>
         </dependency>
 
diff --git a/src/main/java/org/apache/sling/resourceresolver/impl/CommonResourceResolverFactoryImpl.java b/src/main/java/org/apache/sling/resourceresolver/impl/CommonResourceResolverFactoryImpl.java
index 11c6b24..23d7743 100644
--- a/src/main/java/org/apache/sling/resourceresolver/impl/CommonResourceResolverFactoryImpl.java
+++ b/src/main/java/org/apache/sling/resourceresolver/impl/CommonResourceResolverFactoryImpl.java
@@ -31,7 +31,7 @@
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.atomic.AtomicBoolean;
 
-import javax.annotation.Nonnull;
+import org.jetbrains.annotations.NotNull;
 
 import org.apache.commons.collections4.BidiMap;
 import org.apache.sling.api.resource.LoginException;
@@ -141,7 +141,7 @@
      * @param extraForbiddenKeys Keys that should be removed from the returned copy.
      * @return A sanitized mutable map.
      */
-    @Nonnull
+    @NotNull
     static Map<String, Object> sanitizeAuthenticationInfo(Map<String, Object> authenticationInfo, String... extraForbiddenKeys) {
         if (authenticationInfo == null) {
             // nothing to sanitize, just return an empty mutable map
@@ -161,7 +161,7 @@
     /**
      * @see org.apache.sling.api.resource.ResourceResolverFactory#getAdministrativeResourceResolver(java.util.Map)
      */
-    @Nonnull
+    @NotNull
     @Override
     public ResourceResolver getAdministrativeResourceResolver(final Map<String, Object> passedAuthenticationInfo)
     throws LoginException {
@@ -178,7 +178,7 @@
     /**
      * @see org.apache.sling.api.resource.ResourceResolverFactory#getResourceResolver(java.util.Map)
      */
-    @Nonnull
+    @NotNull
     @Override
     public ResourceResolver getResourceResolver(final Map<String, Object> passedAuthenticationInfo)
     throws LoginException {
@@ -405,7 +405,7 @@
         return this.activator.getResourceAccessSecurityTracker();
     }
 
-    @Nonnull
+    @NotNull
     @Override
     public ResourceResolver getServiceResourceResolver(
             final Map<String, Object> passedAuthenticationInfo) throws LoginException {
diff --git a/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverImpl.java b/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverImpl.java
index fca270e..4acf759 100644
--- a/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverImpl.java
+++ b/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverImpl.java
@@ -31,7 +31,7 @@
 import java.util.Set;
 import java.util.StringTokenizer;
 
-import javax.annotation.CheckForNull;
+import org.jetbrains.annotations.Nullable;
 import javax.jcr.Session;
 import javax.servlet.http.HttpServletRequest;
 
@@ -1035,7 +1035,7 @@
     /**
      * Creates a resource with the given path if existing
      */
-    private Resource getAbsoluteResourceInternal(@CheckForNull final Resource parent, @CheckForNull final String path, final Map<String, String> parameters, final boolean isResolve) {
+    private Resource getAbsoluteResourceInternal(@Nullable final Resource parent, @Nullable final String path, final Map<String, String> parameters, final boolean isResolve) {
         if (path == null || path.length() == 0 || path.charAt(0) != '/') {
             logger.debug("getResourceInternal: Path must be absolute {}", path);
             return null; // path must be absolute
diff --git a/src/main/java/org/apache/sling/resourceresolver/impl/ResourceTypeUtil.java b/src/main/java/org/apache/sling/resourceresolver/impl/ResourceTypeUtil.java
index 28d9ea9..997da29 100644
--- a/src/main/java/org/apache/sling/resourceresolver/impl/ResourceTypeUtil.java
+++ b/src/main/java/org/apache/sling/resourceresolver/impl/ResourceTypeUtil.java
@@ -20,7 +20,7 @@
 
 import java.util.List;
 
-import javax.annotation.Nonnull;
+import org.jetbrains.annotations.NotNull;
 
 import org.apache.sling.api.resource.ResourceResolver;
 
@@ -43,7 +43,7 @@
      * @param anotherResourceType Another resource type to compare with {@link resourceType}.
      * @return <code>true</code> if the resource type equals the given resource type.
      */
-    public static boolean areResourceTypesEqual(@Nonnull String resourceType, @Nonnull String anotherResourceType, @Nonnull List<String> searchPath) {
+    public static boolean areResourceTypesEqual(@NotNull String resourceType, @NotNull String anotherResourceType, @NotNull List<String> searchPath) {
         return relativizeResourceType(resourceType, searchPath).equals(relativizeResourceType(anotherResourceType, searchPath));
     }
 
@@ -54,7 +54,7 @@
      * @param searchPath the search paths to strip off from the given resource type.
      * @return the relative resource type
      */
-    public static String relativizeResourceType(@Nonnull String resourceType, @Nonnull List<String> searchPath) {
+    public static String relativizeResourceType(@NotNull String resourceType, @NotNull List<String> searchPath) {
         if (resourceType.startsWith("/")) {
             for (String prefix : searchPath) {
                 if (resourceType.startsWith(prefix)) {
diff --git a/src/main/java/org/apache/sling/resourceresolver/impl/helper/ResourceResolverContext.java b/src/main/java/org/apache/sling/resourceresolver/impl/helper/ResourceResolverContext.java
index e9a004b..31b003a 100644
--- a/src/main/java/org/apache/sling/resourceresolver/impl/helper/ResourceResolverContext.java
+++ b/src/main/java/org/apache/sling/resourceresolver/impl/helper/ResourceResolverContext.java
@@ -17,7 +17,7 @@
  */
 package org.apache.sling.resourceresolver.impl.helper;
 
-import javax.annotation.Nonnull;
+import org.jetbrains.annotations.NotNull;
 
 import org.apache.sling.api.resource.ResourceResolver;
 import org.apache.sling.resourceresolver.impl.ResourceAccessSecurityTracker;
@@ -34,7 +34,7 @@
 
     private final ProviderManager providerManager;
 
-    public ResourceResolverContext(@Nonnull final ResourceResolver resolver, @Nonnull final ResourceAccessSecurityTracker tracker) {
+    public ResourceResolverContext(@NotNull final ResourceResolver resolver, @NotNull final ResourceAccessSecurityTracker tracker) {
         this.resolver = resolver;
         this.providerManager = new ProviderManager(resolver, tracker);
     }
diff --git a/src/main/java/org/apache/sling/resourceresolver/impl/helper/ResourceResolverControl.java b/src/main/java/org/apache/sling/resourceresolver/impl/helper/ResourceResolverControl.java
index a3b3631..71cfbf0 100644
--- a/src/main/java/org/apache/sling/resourceresolver/impl/helper/ResourceResolverControl.java
+++ b/src/main/java/org/apache/sling/resourceresolver/impl/helper/ResourceResolverControl.java
@@ -33,8 +33,8 @@
 import java.util.Set;
 import java.util.concurrent.atomic.AtomicBoolean;
 
-import javax.annotation.CheckForNull;
-import javax.annotation.Nonnull;
+import org.jetbrains.annotations.Nullable;
+import org.jetbrains.annotations.NotNull;
 
 import org.apache.commons.collections4.iterators.IteratorChain;
 import org.apache.commons.lang3.ArrayUtils;
@@ -150,7 +150,7 @@
     /**
      * Refreshes all refreshable providers as well as the resolver used for resource types.
      */
-    public void refresh(@Nonnull final ResourceResolverContext context) {
+    public void refresh(@NotNull final ResourceResolverContext context) {
         for (final AuthenticatedResourceProvider p : context.getProviderManager().getAllUsedRefreshable()) {
             p.refresh();
         }
@@ -162,7 +162,7 @@
     /**
      * Returns {@code true} if all providers are live.
      */
-    public boolean isLive(@Nonnull final ResourceResolverContext context) {
+    public boolean isLive(@NotNull final ResourceResolverContext context) {
         for (final AuthenticatedResourceProvider p : context.getProviderManager().getAllAuthenticated()) {
             if (!p.isLive()) {
                 return false;
@@ -179,7 +179,7 @@
      * resource provider returns parent for this child. See
      * {@link #getResource(String, Resource, Map, boolean)} for more details
      */
-    public Resource getParent(@Nonnull final ResourceResolverContext context, @Nonnull final String parentPath, @Nonnull final Resource child) {
+    public Resource getParent(@NotNull final ResourceResolverContext context, @NotNull final String parentPath, @NotNull final Resource child) {
         final AuthenticatedResourceProvider childProvider = getBestMatchingProvider(context, child.getPath());
         final AuthenticatedResourceProvider parentProvider = getBestMatchingProvider(context, parentPath);
         if ( parentProvider != null ) {
@@ -641,7 +641,7 @@
      * @param path
      * @return
      */
-    private @CheckForNull AuthenticatedResourceProvider getBestMatchingProvider(final ResourceResolverContext context,
+    private @Nullable AuthenticatedResourceProvider getBestMatchingProvider(final ResourceResolverContext context,
             final String path) {
         try {
             final Node<ResourceProviderHandler> node = resourceProviderTracker.getResourceProviderStorage().getTree().getBestMatchingNode(path);
@@ -656,7 +656,7 @@
      * @param path
      * @return The modifiable provider or {@code null}
      */
-    private @CheckForNull AuthenticatedResourceProvider getBestMatchingModifiableProvider(
+    private @Nullable AuthenticatedResourceProvider getBestMatchingModifiableProvider(
             final ResourceResolverContext context,
             final String path)  {
         final Node<ResourceProviderHandler> node = resourceProviderTracker.getResourceProviderStorage().getTree().getBestMatchingNode(path);
@@ -793,8 +793,8 @@
         return null;
     }
 
-    public void registerAuthenticatedProvider(@Nonnull ResourceProviderHandler handler,
-            @CheckForNull Object providerState) {
+    public void registerAuthenticatedProvider(@NotNull ResourceProviderHandler handler,
+            @Nullable Object providerState) {
         this.authenticatedProviders.put(handler, providerState);
     }
 
diff --git a/src/main/java/org/apache/sling/resourceresolver/impl/legacy/LegacyResourceProviderAdapter.java b/src/main/java/org/apache/sling/resourceresolver/impl/legacy/LegacyResourceProviderAdapter.java
index 7c94ffb..68e34e6 100644
--- a/src/main/java/org/apache/sling/resourceresolver/impl/legacy/LegacyResourceProviderAdapter.java
+++ b/src/main/java/org/apache/sling/resourceresolver/impl/legacy/LegacyResourceProviderAdapter.java
@@ -24,8 +24,8 @@
 import java.util.Iterator;
 import java.util.Map;
 
-import javax.annotation.CheckForNull;
-import javax.annotation.Nonnull;
+import org.jetbrains.annotations.Nullable;
+import org.jetbrains.annotations.NotNull;
 
 import org.apache.sling.api.adapter.Adaptable;
 import org.apache.sling.api.resource.AttributableResourceProvider;
@@ -105,14 +105,14 @@
     }
 
     @Override
-    public void refresh(final @Nonnull ResolveContext<Object> ctx) {
+    public void refresh(final @NotNull ResolveContext<Object> ctx) {
         if (rp instanceof RefreshableResourceProvider) {
             ((RefreshableResourceProvider) rp).refresh();
         }
     }
 
     @Override
-    public @CheckForNull QueryLanguageProvider<Object> getQueryLanguageProvider() {
+    public @Nullable QueryLanguageProvider<Object> getQueryLanguageProvider() {
         if (rp instanceof QueriableResourceProvider) {
             return new JCRQueryProviderAdapter((QueriableResourceProvider) rp, languages);
         } else {
@@ -121,7 +121,7 @@
     }
 
     @Override
-    public Collection<String> getAttributeNames(final @Nonnull ResolveContext<Object> ctx) {
+    public Collection<String> getAttributeNames(final @NotNull ResolveContext<Object> ctx) {
         if (rp instanceof AttributableResourceProvider) {
             return ((AttributableResourceProvider) rp).getAttributeNames(ctx.getResourceResolver());
         } else {
@@ -130,7 +130,7 @@
     }
 
     @Override
-    public Object getAttribute(final @Nonnull ResolveContext<Object> ctx, final @Nonnull String name) {
+    public Object getAttribute(final @NotNull ResolveContext<Object> ctx, final @NotNull String name) {
         if (rp instanceof AttributableResourceProvider) {
             return ((AttributableResourceProvider) rp).getAttribute(ctx.getResourceResolver(), name);
         } else {
@@ -139,7 +139,7 @@
     }
 
     @Override
-    public boolean isLive(final @Nonnull ResolveContext<Object> ctx) {
+    public boolean isLive(final @NotNull ResolveContext<Object> ctx) {
         if (rp instanceof DynamicResourceProvider) {
             return ((DynamicResourceProvider) rp).isLive();
         } else {
@@ -148,7 +148,7 @@
     }
 
     @Override
-    public void logout(final @Nonnull Object state) {
+    public void logout(final @NotNull Object state) {
         if (rp instanceof DynamicResourceProvider) {
             ((DynamicResourceProvider) rp).close();
         }
@@ -161,7 +161,7 @@
 
     @SuppressWarnings({ "rawtypes", "unchecked" })
     @Override
-    public Resource create(final @Nonnull ResolveContext<Object> ctx, final String path,
+    public Resource create(final @NotNull ResolveContext<Object> ctx, final String path,
             final Map<String, Object> properties) throws PersistenceException {
         Resource createdResource = null;
         if (rp instanceof ModifyingResourceProvider) {
@@ -175,7 +175,7 @@
     }
 
     @Override
-    public void delete(final @Nonnull ResolveContext<Object> ctx, final @Nonnull Resource resource)
+    public void delete(final @NotNull ResolveContext<Object> ctx, final @NotNull Resource resource)
             throws PersistenceException {
         if (rp instanceof ModifyingResourceProvider) {
             ((ModifyingResourceProvider) rp).delete(ctx.getResourceResolver(), resource.getPath());
@@ -185,7 +185,7 @@
     }
 
     @Override
-    public void revert(final @Nonnull ResolveContext<Object> ctx) {
+    public void revert(final @NotNull ResolveContext<Object> ctx) {
         if (rp instanceof ModifyingResourceProvider) {
             ((ModifyingResourceProvider) rp).revert(ctx.getResourceResolver());
         } else {
@@ -194,7 +194,7 @@
     }
 
     @Override
-    public void commit(final @Nonnull ResolveContext<Object> ctx) throws PersistenceException {
+    public void commit(final @NotNull ResolveContext<Object> ctx) throws PersistenceException {
         if (rp instanceof ModifyingResourceProvider) {
             ((ModifyingResourceProvider) rp).commit(ctx.getResourceResolver());
         } else {
@@ -203,7 +203,7 @@
     }
 
     @Override
-    public boolean hasChanges(final @Nonnull ResolveContext<Object> ctx) {
+    public boolean hasChanges(final @NotNull ResolveContext<Object> ctx) {
         if (rp instanceof ModifyingResourceProvider) {
             return ((ModifyingResourceProvider) rp).hasChanges(ctx.getResourceResolver());
         } else {
@@ -213,7 +213,7 @@
 
     @SuppressWarnings("unchecked")
     @Override
-    public <AdapterType> AdapterType adaptTo(final @Nonnull ResolveContext<Object> ctx, final @Nonnull Class<AdapterType> type) {
+    public <AdapterType> AdapterType adaptTo(final @NotNull ResolveContext<Object> ctx, final @NotNull Class<AdapterType> type) {
         if ( rp instanceof Adaptable ) {
             final Object value = ((Adaptable)rp).adaptTo(type);
             if ( value != null ) {
diff --git a/src/main/java/org/apache/sling/resourceresolver/impl/legacy/LegacyResourceProviderFactoryAdapter.java b/src/main/java/org/apache/sling/resourceresolver/impl/legacy/LegacyResourceProviderFactoryAdapter.java
index 9122b9d..58f1915 100644
--- a/src/main/java/org/apache/sling/resourceresolver/impl/legacy/LegacyResourceProviderFactoryAdapter.java
+++ b/src/main/java/org/apache/sling/resourceresolver/impl/legacy/LegacyResourceProviderFactoryAdapter.java
@@ -22,8 +22,8 @@
 import java.util.Iterator;
 import java.util.Map;
 
-import javax.annotation.CheckForNull;
-import javax.annotation.Nonnull;
+import org.jetbrains.annotations.Nullable;
+import org.jetbrains.annotations.NotNull;
 
 import org.apache.commons.lang3.ArrayUtils;
 import org.apache.sling.api.resource.LoginException;
@@ -52,14 +52,14 @@
     }
 
     @Override
-    @Nonnull
-    public LegacyResourceProviderAdapter authenticate(final @Nonnull Map<String, Object> authenticationInfo)
+    @NotNull
+    public LegacyResourceProviderAdapter authenticate(final @NotNull Map<String, Object> authenticationInfo)
             throws LoginException {
         return new LegacyResourceProviderAdapter(rpFactory.getResourceProvider(authenticationInfo), languages, ownsRoot);
     }
 
     @Override
-    public void logout(final @Nonnull LegacyResourceProviderAdapter state) {
+    public void logout(final @NotNull LegacyResourceProviderAdapter state) {
         state.logout(null);
     }
 
@@ -74,12 +74,12 @@
     }
 
     @Override
-    public void refresh(final @Nonnull ResolveContext<LegacyResourceProviderAdapter> ctx) {
+    public void refresh(final @NotNull ResolveContext<LegacyResourceProviderAdapter> ctx) {
         ctx.getProviderState().refresh((ResolveContext) ctx);
     }
 
     @Override
-    public @CheckForNull QueryLanguageProvider<LegacyResourceProviderAdapter> getQueryLanguageProvider() {
+    public @Nullable QueryLanguageProvider<LegacyResourceProviderAdapter> getQueryLanguageProvider() {
         if (ArrayUtils.isEmpty(languages)) {
             return super.getQueryLanguageProvider();
         } else {
@@ -88,50 +88,50 @@
     }
 
     @Override
-    public Collection<String> getAttributeNames(final @Nonnull ResolveContext<LegacyResourceProviderAdapter> ctx) {
+    public Collection<String> getAttributeNames(final @NotNull ResolveContext<LegacyResourceProviderAdapter> ctx) {
         return ctx.getProviderState().getAttributeNames((ResolveContext) ctx);
     }
 
     @Override
-    public Object getAttribute(final @Nonnull ResolveContext<LegacyResourceProviderAdapter> ctx,
-            final @Nonnull String name) {
+    public Object getAttribute(final @NotNull ResolveContext<LegacyResourceProviderAdapter> ctx,
+            final @NotNull String name) {
         return ctx.getProviderState().getAttribute((ResolveContext) ctx, name);
     }
 
     @Override
-    public boolean isLive(final @Nonnull ResolveContext<LegacyResourceProviderAdapter> ctx) {
+    public boolean isLive(final @NotNull ResolveContext<LegacyResourceProviderAdapter> ctx) {
         return ctx.getProviderState().isLive((ResolveContext) ctx);
     }
 
     @Override
-    public Resource create(final @Nonnull ResolveContext<LegacyResourceProviderAdapter> ctx, final String path,
+    public Resource create(final @NotNull ResolveContext<LegacyResourceProviderAdapter> ctx, final String path,
             final Map<String, Object> properties) throws PersistenceException {
         return ctx.getProviderState().create((ResolveContext) ctx, path, properties);
     }
 
     @Override
-    public void delete(final @Nonnull ResolveContext<LegacyResourceProviderAdapter> ctx,
-            final @Nonnull Resource resource) throws PersistenceException {
+    public void delete(final @NotNull ResolveContext<LegacyResourceProviderAdapter> ctx,
+            final @NotNull Resource resource) throws PersistenceException {
         ctx.getProviderState().delete((ResolveContext) ctx, resource);
     }
 
     @Override
-    public void revert(final @Nonnull ResolveContext<LegacyResourceProviderAdapter> ctx) {
+    public void revert(final @NotNull ResolveContext<LegacyResourceProviderAdapter> ctx) {
         ctx.getProviderState().revert((ResolveContext) ctx);
     }
 
     @Override
-    public void commit(final @Nonnull ResolveContext<LegacyResourceProviderAdapter> ctx) throws PersistenceException {
+    public void commit(final @NotNull ResolveContext<LegacyResourceProviderAdapter> ctx) throws PersistenceException {
         ctx.getProviderState().commit((ResolveContext) ctx);
     }
 
     @Override
-    public boolean hasChanges(final @Nonnull ResolveContext<LegacyResourceProviderAdapter> ctx) {
+    public boolean hasChanges(final @NotNull ResolveContext<LegacyResourceProviderAdapter> ctx) {
         return ctx.getProviderState().hasChanges((ResolveContext) ctx);
     }
 
     @Override
-    public <AdapterType> AdapterType adaptTo(final @Nonnull ResolveContext<LegacyResourceProviderAdapter> ctx, final @Nonnull Class<AdapterType> type) {
+    public <AdapterType> AdapterType adaptTo(final @NotNull ResolveContext<LegacyResourceProviderAdapter> ctx, final @NotNull Class<AdapterType> type) {
         return (AdapterType) ctx.getProviderState().adaptTo((ResolveContext)ctx, type);
     }
 
diff --git a/src/main/java/org/apache/sling/resourceresolver/impl/providers/stateful/AuthenticatedResourceProvider.java b/src/main/java/org/apache/sling/resourceresolver/impl/providers/stateful/AuthenticatedResourceProvider.java
index 38d27c4..1b0807c 100644
--- a/src/main/java/org/apache/sling/resourceresolver/impl/providers/stateful/AuthenticatedResourceProvider.java
+++ b/src/main/java/org/apache/sling/resourceresolver/impl/providers/stateful/AuthenticatedResourceProvider.java
@@ -23,8 +23,8 @@
 import java.util.Map;
 import java.util.Set;
 
-import javax.annotation.CheckForNull;
-import javax.annotation.Nonnull;
+import org.jetbrains.annotations.Nullable;
+import org.jetbrains.annotations.NotNull;
 
 import org.apache.sling.api.resource.PersistenceException;
 import org.apache.sling.api.resource.Resource;
@@ -62,10 +62,10 @@
 
     private final boolean useRAS;
 
-    public AuthenticatedResourceProvider(@Nonnull final ResourceProviderHandler providerHandler,
+    public AuthenticatedResourceProvider(@NotNull final ResourceProviderHandler providerHandler,
             final boolean useRAS,
-            @Nonnull final ResolveContext<Object> resolveContext,
-            @Nonnull final ResourceAccessSecurityTracker tracker) {
+            @NotNull final ResolveContext<Object> resolveContext,
+            @NotNull final ResourceAccessSecurityTracker tracker) {
         this.providerHandler = providerHandler;
         this.resolveContext = resolveContext;
         this.tracker = tracker;
@@ -76,7 +76,7 @@
      * Get the resolve context.
      * @return The resolve context
      */
-    public @Nonnull ResolveContext<Object> getResolveContext() {
+    public @NotNull ResolveContext<Object> getResolveContext() {
         return this.resolveContext;
     }
 
@@ -387,7 +387,7 @@
      * @param rsrc The resource or {@code null}.
      * @return The wrapped resource or {@code null}
      */
-    private @CheckForNull Resource wrapResource(@CheckForNull Resource rsrc) {
+    private @Nullable Resource wrapResource(@Nullable Resource rsrc) {
         Resource returnValue = null;
 
         if (useRAS && rsrc != null) {
diff --git a/src/main/java/org/apache/sling/resourceresolver/impl/providers/stateful/BasicResolveContext.java b/src/main/java/org/apache/sling/resourceresolver/impl/providers/stateful/BasicResolveContext.java
index 6b0335e..03a7d8e 100644
--- a/src/main/java/org/apache/sling/resourceresolver/impl/providers/stateful/BasicResolveContext.java
+++ b/src/main/java/org/apache/sling/resourceresolver/impl/providers/stateful/BasicResolveContext.java
@@ -18,8 +18,8 @@
  */
 package org.apache.sling.resourceresolver.impl.providers.stateful;
 
-import javax.annotation.CheckForNull;
-import javax.annotation.Nonnull;
+import org.jetbrains.annotations.Nullable;
+import org.jetbrains.annotations.NotNull;
 
 import org.apache.sling.api.resource.LoginException;
 import org.apache.sling.api.resource.ResourceResolver;
@@ -47,11 +47,11 @@
 
     private final String parentPath;
 
-    public BasicResolveContext(@Nonnull final ResourceResolver resolver,
-            @Nonnull final ProviderManager resolveContextManager,
-            @Nonnull final ResourceResolverControl control,
-            @CheckForNull final T providerState,
-            @Nonnull final String parentPath) {
+    public BasicResolveContext(@NotNull final ResourceResolver resolver,
+            @NotNull final ProviderManager resolveContextManager,
+            @NotNull final ResourceResolverControl control,
+            @Nullable final T providerState,
+            @NotNull final String parentPath) {
         this.resolver = resolver;
         this.resolveContextManager = resolveContextManager;
         this.parentPath = parentPath;
diff --git a/src/main/java/org/apache/sling/resourceresolver/impl/providers/stateful/ProviderManager.java b/src/main/java/org/apache/sling/resourceresolver/impl/providers/stateful/ProviderManager.java
index 4dfcda2..9e0818f 100644
--- a/src/main/java/org/apache/sling/resourceresolver/impl/providers/stateful/ProviderManager.java
+++ b/src/main/java/org/apache/sling/resourceresolver/impl/providers/stateful/ProviderManager.java
@@ -24,8 +24,8 @@
 import java.util.List;
 import java.util.Map;
 
-import javax.annotation.CheckForNull;
-import javax.annotation.Nonnull;
+import org.jetbrains.annotations.Nullable;
+import org.jetbrains.annotations.NotNull;
 
 import org.apache.sling.api.resource.LoginException;
 import org.apache.sling.api.resource.ResourceResolver;
@@ -65,7 +65,7 @@
 
     private final ResourceAccessSecurityTracker tracker;
 
-    public ProviderManager(@Nonnull final ResourceResolver resolver, @Nonnull final ResourceAccessSecurityTracker tracker) {
+    public ProviderManager(@NotNull final ResourceResolver resolver, @NotNull final ResourceAccessSecurityTracker tracker) {
         this.contextMap = new IdentityHashMap<ResourceProviderHandler, AuthenticatedResourceProvider>();
         this.resolver = resolver;
         this.tracker = tracker;
@@ -76,8 +76,8 @@
      * @param handler The resource handler
      * @return The resource context or {@code null} if authentication failed previously.
      */
-    public @CheckForNull AuthenticatedResourceProvider getOrCreateProvider(@Nonnull final ResourceProviderHandler handler,
-            @Nonnull final ResourceResolverControl control)
+    public @Nullable AuthenticatedResourceProvider getOrCreateProvider(@NotNull final ResourceProviderHandler handler,
+            @NotNull final ResourceResolverControl control)
     throws LoginException {
         AuthenticatedResourceProvider provider = this.contextMap.get(handler);
         if (provider == null) {
@@ -108,8 +108,8 @@
      * @param handler The resource handler
      * @return The resource context or {@code null}.
      */
-    public @CheckForNull ResolveContext<Object> getOrCreateResolveContext(@Nonnull final ResourceProviderHandler handler,
-            @Nonnull final ResourceResolverControl control)
+    public @Nullable ResolveContext<Object> getOrCreateResolveContext(@NotNull final ResourceProviderHandler handler,
+            @NotNull final ResourceResolverControl control)
     throws LoginException {
         AuthenticatedResourceProvider provider = this.getOrCreateProvider(handler, control);
         return provider == null ? null : provider.getResolveContext();
@@ -121,8 +121,8 @@
      * @param control the resource resolver control
      * @throws LoginException If authentication fails to one provider
      */
-    public void authenticateAll(@Nonnull final List<ResourceProviderHandler> handlers,
-            @Nonnull final ResourceResolverControl control)
+    public void authenticateAll(@NotNull final List<ResourceProviderHandler> handlers,
+            @NotNull final ResourceResolverControl control)
     throws LoginException {
         for (final ResourceProviderHandler h : handlers) {
             try {
@@ -151,9 +151,9 @@
      * @return The resolve context
      * @throws LoginException If authentication fails
      */
-    private @Nonnull AuthenticatedResourceProvider authenticate(@Nonnull final ResourceProviderHandler handler,
-            @Nonnull final ResourceProvider<Object> provider,
-            @Nonnull final ResourceResolverControl control) throws LoginException {
+    private @NotNull AuthenticatedResourceProvider authenticate(@NotNull final ResourceProviderHandler handler,
+            @NotNull final ResourceProvider<Object> provider,
+            @NotNull final ResourceResolverControl control) throws LoginException {
         boolean isAuthenticated = false;
         Object contextData = null;
         if ( (handler.getInfo().getAuthType() == AuthType.required || handler.getInfo().getAuthType() == AuthType.lazy) ) {
@@ -200,8 +200,8 @@
         return new ArrayList<AuthenticatedResourceProvider>(refreshable);
     }
 
-    public Iterable<AuthenticatedResourceProvider> getAllBestEffort(@Nonnull final List<ResourceProviderHandler> handlers,
-            @Nonnull final ResourceResolverControl control) {
+    public Iterable<AuthenticatedResourceProvider> getAllBestEffort(@NotNull final List<ResourceProviderHandler> handlers,
+            @NotNull final ResourceResolverControl control) {
         final Iterator<ResourceProviderHandler> handlerIter = handlers.iterator();
         return new Iterable<AuthenticatedResourceProvider>() {
 
diff --git a/src/test/java/org/apache/sling/resourceresolver/impl/ResourceResolverMangleNamespacesTest.java b/src/test/java/org/apache/sling/resourceresolver/impl/ResourceResolverMangleNamespacesTest.java
index 420a572..8877882 100644
--- a/src/test/java/org/apache/sling/resourceresolver/impl/ResourceResolverMangleNamespacesTest.java
+++ b/src/test/java/org/apache/sling/resourceresolver/impl/ResourceResolverMangleNamespacesTest.java
@@ -23,8 +23,8 @@
 import java.util.Arrays;
 import java.util.Iterator;
 
-import javax.annotation.CheckForNull;
-import javax.annotation.Nonnull;
+import org.jetbrains.annotations.Nullable;
+import org.jetbrains.annotations.NotNull;
 import javax.jcr.RepositoryException;
 import javax.jcr.Session;
 
@@ -73,8 +73,8 @@
 
             @SuppressWarnings("unchecked")
             @Override
-            public @CheckForNull <AdapterType> AdapterType adaptTo(final  @Nonnull ResolveContext<Object> ctx,
-                    final @Nonnull Class<AdapterType> type) {
+            public @Nullable <AdapterType> AdapterType adaptTo(final  @NotNull ResolveContext<Object> ctx,
+                    final @NotNull Class<AdapterType> type) {
                 if (type.equals(Session.class)) {
                     return (AdapterType) activeSession;
                 } else {