SLING-7798 Switch from JSR-305 annotations to JetBrains Nullable/NotNull annotations
authorsseifert <sseifert@pro-vision.de>
Mon, 13 Aug 2018 09:39:09 +0000 (11:39 +0200)
committersseifert <sseifert@pro-vision.de>
Mon, 13 Aug 2018 09:39:09 +0000 (11:39 +0200)
19 files changed:
pom.xml
src/main/java/org/apache/sling/models/impl/ModelAdapterFactory.java
src/main/java/org/apache/sling/models/impl/ResourceTypeBasedResourcePicker.java
src/main/java/org/apache/sling/models/impl/Result.java
src/main/java/org/apache/sling/models/impl/injectors/BindingsInjector.java
src/main/java/org/apache/sling/models/impl/injectors/ChildResourceInjector.java
src/main/java/org/apache/sling/models/impl/injectors/OSGiServiceInjector.java
src/main/java/org/apache/sling/models/impl/injectors/RequestAttributeInjector.java
src/main/java/org/apache/sling/models/impl/injectors/ResourcePathInjector.java
src/main/java/org/apache/sling/models/impl/injectors/SelfInjector.java
src/main/java/org/apache/sling/models/impl/injectors/SlingObjectInjector.java
src/main/java/org/apache/sling/models/impl/injectors/ValueMapInjector.java
src/main/java/org/apache/sling/models/impl/via/AbstractResourceTypeViaProvider.java
src/main/java/org/apache/sling/models/impl/via/ForcedResourceTypeViaProvider.java
src/main/java/org/apache/sling/models/impl/via/ResourceSuperTypeViaProvider.java
src/test/java/org/apache/sling/models/impl/AdapterFactoryTest.java
src/test/java/org/apache/sling/models/impl/RequestDisposalTest.java
src/test/java/org/apache/sling/models/impl/injector/CustomAnnotationInjector.java
src/test/java/org/apache/sling/models/impl/injector/SimpleInjector.java

diff --git a/pom.xml b/pom.xml
index 323592b..b728f79 100644 (file)
--- a/pom.xml
+++ b/pom.xml
             <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>
     </dependencies>
index 3f50ad8..3326ac2 100644 (file)
@@ -38,8 +38,6 @@ import java.util.WeakHashMap;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentMap;
 
-import javax.annotation.CheckForNull;
-import javax.annotation.Nonnull;
 import javax.annotation.PostConstruct;
 import javax.servlet.ServletRequest;
 import javax.servlet.ServletRequestEvent;
@@ -99,6 +97,8 @@ import org.apache.sling.models.spi.injectorspecific.InjectAnnotationProcessorFac
 import org.apache.sling.models.spi.injectorspecific.InjectAnnotationProcessorFactory2;
 import org.apache.sling.models.spi.injectorspecific.StaticInjectAnnotationProcessorFactory;
 import org.apache.sling.scripting.api.BindingsValuesProvidersByContext;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.Constants;
 import org.osgi.framework.ServiceRegistration;
@@ -141,7 +141,7 @@ public class ModelAdapterFactory implements AdapterFactory, Runnable, ModelFacto
         private List<DisposalCallback> callbacks = new ArrayList<>();
 
         @Override
-        public void addDisposalCallback(@Nonnull DisposalCallback callback) {
+        public void addDisposalCallback(@NotNull DisposalCallback callback) {
             callbacks.add(callback);
         }
 
@@ -190,25 +190,25 @@ public class ModelAdapterFactory implements AdapterFactory, Runnable, ModelFacto
     @Property(label = "Cleanup Job Period", description = "Period at which OSGi service references from ThreadLocals will be cleaned up.", longValue = DEFAULT_CLEANUP_JOB_PERIOD)
     private static final String PROP_CLEANUP_JOB_PERIOD = "cleanup.job.period";
 
-    private final @Nonnull ConcurrentMap<String, RankedServices<Injector>> injectors = new ConcurrentHashMap<>();
-    private final @Nonnull RankedServices<Injector> sortedInjectors = new RankedServices<>();
-    private final @Nonnull ConcurrentMap<Class<? extends ViaProviderType>, ViaProvider> viaProviders = new ConcurrentHashMap<>();
+    private final @NotNull ConcurrentMap<String, RankedServices<Injector>> injectors = new ConcurrentHashMap<>();
+    private final @NotNull RankedServices<Injector> sortedInjectors = new RankedServices<>();
+    private final @NotNull ConcurrentMap<Class<? extends ViaProviderType>, ViaProvider> viaProviders = new ConcurrentHashMap<>();
 
     @Reference(name = "injectAnnotationProcessorFactory", referenceInterface = InjectAnnotationProcessorFactory.class,
             cardinality = ReferenceCardinality.OPTIONAL_MULTIPLE, policy = ReferencePolicy.DYNAMIC)
-    private final @Nonnull RankedServices<InjectAnnotationProcessorFactory> injectAnnotationProcessorFactories = new RankedServices<>();
+    private final @NotNull RankedServices<InjectAnnotationProcessorFactory> injectAnnotationProcessorFactories = new RankedServices<>();
 
     @Reference(name = "injectAnnotationProcessorFactory2", referenceInterface = InjectAnnotationProcessorFactory2.class,
             cardinality = ReferenceCardinality.OPTIONAL_MULTIPLE, policy = ReferencePolicy.DYNAMIC)
-    private final @Nonnull RankedServices<InjectAnnotationProcessorFactory2> injectAnnotationProcessorFactories2 = new RankedServices<>();
+    private final @NotNull RankedServices<InjectAnnotationProcessorFactory2> injectAnnotationProcessorFactories2 = new RankedServices<>();
 
     @Reference(name = "staticInjectAnnotationProcessorFactory", referenceInterface = StaticInjectAnnotationProcessorFactory.class,
             cardinality = ReferenceCardinality.OPTIONAL_MULTIPLE, policy = ReferencePolicy.DYNAMIC)
-    private final @Nonnull RankedServices<StaticInjectAnnotationProcessorFactory> staticInjectAnnotationProcessorFactories = new RankedServices<>();
+    private final @NotNull RankedServices<StaticInjectAnnotationProcessorFactory> staticInjectAnnotationProcessorFactories = new RankedServices<>();
 
     @Reference(name = "implementationPicker", referenceInterface = ImplementationPicker.class,
             cardinality = ReferenceCardinality.OPTIONAL_MULTIPLE, policy = ReferencePolicy.DYNAMIC)
-    private final @Nonnull RankedServices<ImplementationPicker> implementationPickers = new RankedServices<>();
+    private final @NotNull RankedServices<ImplementationPicker> implementationPickers = new RankedServices<>();
 
     // bind the service with the highest priority (if a new one comes in this service gets restarted)
     @Reference(cardinality=ReferenceCardinality.OPTIONAL_UNARY, policyOption=ReferencePolicyOption.GREEDY)
@@ -216,7 +216,7 @@ public class ModelAdapterFactory implements AdapterFactory, Runnable, ModelFacto
 
     @Reference(name = "modelExporter", cardinality = ReferenceCardinality.OPTIONAL_MULTIPLE, policy = ReferencePolicy.DYNAMIC,
             referenceInterface = ModelExporter.class)
-    private final @Nonnull RankedServices<ModelExporter> modelExporters = new RankedServices<>();
+    private final @NotNull RankedServices<ModelExporter> modelExporters = new RankedServices<>();
 
     @Reference
     private BindingsValuesProvidersByContext bindingsValuesProvidersByContext;
@@ -256,7 +256,7 @@ public class ModelAdapterFactory implements AdapterFactory, Runnable, ModelFacto
     }
 
     @Override
-    public @Nonnull <ModelType> ModelType createModel(@Nonnull Object adaptable, @Nonnull Class<ModelType> type) throws MissingElementsException,
+    public @NotNull <ModelType> ModelType createModel(@NotNull Object adaptable, @NotNull Class<ModelType> type) throws MissingElementsException,
             InvalidAdaptableException, ValidationException, InvalidModelException {
         Result<ModelType> result = internalCreateModel(adaptable, type);
         if (!result.wasSuccessful()) {
@@ -266,7 +266,7 @@ public class ModelAdapterFactory implements AdapterFactory, Runnable, ModelFacto
     }
 
     @Override
-    public boolean canCreateFromAdaptable(@Nonnull Object adaptable, @Nonnull Class<?> modelClass) throws ModelClassException {
+    public boolean canCreateFromAdaptable(@NotNull Object adaptable, @NotNull Class<?> modelClass) throws ModelClassException {
         return internalCanCreateFromAdaptable(adaptable, modelClass);
     }
 
@@ -288,7 +288,7 @@ public class ModelAdapterFactory implements AdapterFactory, Runnable, ModelFacto
 
     @Override
     @Deprecated
-    public boolean isModelClass(@Nonnull Object adaptable, @Nonnull Class<?> requestedType) {
+    public boolean isModelClass(@NotNull Object adaptable, @NotNull Class<?> requestedType) {
         try {
             getImplementationTypeForAdapterType(requestedType, adaptable);
         } catch (ModelClassException e) {
@@ -299,7 +299,7 @@ public class ModelAdapterFactory implements AdapterFactory, Runnable, ModelFacto
     }
 
     @Override
-    public boolean isModelClass(@Nonnull Class<?> type) {
+    public boolean isModelClass(@NotNull Class<?> type) {
         return this.adapterImplementations.isModelClass(type);
     }
 
@@ -476,10 +476,10 @@ public class ModelAdapterFactory implements AdapterFactory, Runnable, ModelFacto
     }
 
     private
-    @CheckForNull
+    @Nullable
     RuntimeException injectElement(final InjectableElement element, final Object adaptable,
-                                   final @Nonnull DisposalCallbackRegistry registry, final InjectCallback callback,
-                                   final @Nonnull Map<ValuePreparer, Object> preparedValues) {
+                                   final @NotNull DisposalCallbackRegistry registry, final InjectCallback callback,
+                                   final @NotNull Map<ValuePreparer, Object> preparedValues) {
 
         InjectAnnotationProcessor annotationProcessor = null;
         String source = element.getSource();
@@ -743,7 +743,7 @@ public class ModelAdapterFactory implements AdapterFactory, Runnable, ModelFacto
     }
 
     private <ModelType> Result<ModelType> newInstanceWithConstructorInjection(final ModelClassConstructor<ModelType> constructor, final Object adaptable,
-            final ModelClass<ModelType> modelClass, final DisposalCallbackRegistry registry, final @Nonnull Map<ValuePreparer, Object> preparedValues)
+            final ModelClass<ModelType> modelClass, final DisposalCallbackRegistry registry, final @NotNull Map<ValuePreparer, Object> preparedValues)
             throws InstantiationException, InvocationTargetException, IllegalAccessException {
         ConstructorParameter[] parameters = constructor.getConstructorParameters();
 
@@ -981,7 +981,7 @@ public class ModelAdapterFactory implements AdapterFactory, Runnable, ModelFacto
      * @param isWithinCollection
      * @return a Result either encapsulating an exception or the adapted value
      */
-    private @CheckForNull Result<Object> adapt(final Object value, final Class<?> type, boolean isWithinCollection) {
+    private @Nullable Result<Object> adapt(final Object value, final Class<?> type, boolean isWithinCollection) {
         Object adaptedValue = null;
         final String messageSuffix = isWithinCollection ? " in collection" : "";
         if (isModelClass(type) && canCreateFromAdaptable(value, type)) {
@@ -1201,37 +1201,37 @@ public class ModelAdapterFactory implements AdapterFactory, Runnable, ModelFacto
         viaProviders.remove(type, viaProvider);
     }
 
-    @Nonnull Collection<Injector> getInjectors() {
+    @NotNull Collection<Injector> getInjectors() {
         return sortedInjectors.get();
     }
 
-    @Nonnull Collection<InjectAnnotationProcessorFactory> getInjectAnnotationProcessorFactories() {
+    @NotNull Collection<InjectAnnotationProcessorFactory> getInjectAnnotationProcessorFactories() {
         return injectAnnotationProcessorFactories.get();
     }
 
-    @Nonnull Collection<InjectAnnotationProcessorFactory2> getInjectAnnotationProcessorFactories2() {
+    @NotNull Collection<InjectAnnotationProcessorFactory2> getInjectAnnotationProcessorFactories2() {
         return injectAnnotationProcessorFactories2.get();
     }
 
-    @Nonnull Collection<StaticInjectAnnotationProcessorFactory> getStaticInjectAnnotationProcessorFactories() {
+    @NotNull Collection<StaticInjectAnnotationProcessorFactory> getStaticInjectAnnotationProcessorFactories() {
         return staticInjectAnnotationProcessorFactories.get();
     }
 
-    @Nonnull ImplementationPicker[] getImplementationPickers() {
+    @NotNull ImplementationPicker[] getImplementationPickers() {
         return adapterImplementations.getImplementationPickers();
     }
 
-    @Nonnull Map<Class<? extends ViaProviderType>, ViaProvider> getViaProviders() {
+    @NotNull Map<Class<? extends ViaProviderType>, ViaProvider> getViaProviders() {
         return viaProviders;
     }
 
     @Override
-    public boolean isModelAvailableForRequest(@Nonnull SlingHttpServletRequest request) {
+    public boolean isModelAvailableForRequest(@NotNull SlingHttpServletRequest request) {
         return adapterImplementations.getModelClassForRequest(request) != null;
     }
 
     @Override
-    public boolean isModelAvailableForResource(@Nonnull Resource resource) {
+    public boolean isModelAvailableForResource(@NotNull Resource resource) {
         return adapterImplementations.getModelClassForResource(resource) != null;
     }
 
@@ -1304,7 +1304,7 @@ public class ModelAdapterFactory implements AdapterFactory, Runnable, ModelFacto
     }
 
     @Override
-    public <T> T getModelFromWrappedRequest(@Nonnull SlingHttpServletRequest request, @Nonnull Resource resource, @Nonnull Class<T> targetClass) {
+    public <T> T getModelFromWrappedRequest(@NotNull SlingHttpServletRequest request, @NotNull Resource resource, @NotNull Class<T> targetClass) {
         return new ResourceOverridingRequestWrapper(request, resource, adapterManager,
                 scriptEngineFactory, bindingsValuesProvidersByContext).adaptTo(targetClass);
     }
index e38281d..35ca9dd 100644 (file)
@@ -19,8 +19,6 @@ package org.apache.sling.models.impl;
 import java.util.HashMap;
 import java.util.Map;
 
-import javax.annotation.Nonnull;
-
 import org.apache.felix.scr.annotations.Component;
 import org.apache.felix.scr.annotations.Property;
 import org.apache.felix.scr.annotations.Service;
@@ -28,6 +26,7 @@ import org.apache.sling.api.SlingHttpServletRequest;
 import org.apache.sling.api.resource.Resource;
 import org.apache.sling.models.annotations.Model;
 import org.apache.sling.models.spi.ImplementationPicker;
+import org.jetbrains.annotations.NotNull;
 import org.osgi.framework.Constants;
 
 @Component
@@ -36,7 +35,7 @@ import org.osgi.framework.Constants;
 public class ResourceTypeBasedResourcePicker implements ImplementationPicker {
 
     @Override
-    public Class<?> pick(@Nonnull Class<?> adapterType, @Nonnull Class<?>[] implementationsTypes, @Nonnull Object adaptable) {
+    public Class<?> pick(@NotNull Class<?> adapterType, @NotNull Class<?>[] implementationsTypes, @NotNull Object adaptable) {
         final Resource resource = findResource(adaptable);
         if (resource == null) {
             return null;
index 467556f..26f3c7c 100644 (file)
@@ -18,7 +18,8 @@
  */
 package org.apache.sling.models.impl;
 
-import javax.annotation.Nonnull;
+import org.jetbrains.annotations.NotNull;
+
 /**
  * This class encapsulates a value of a generic class in case of success or the
  * {@link RuntimeException}s in case of an error. It is used because the
@@ -29,7 +30,6 @@ import javax.annotation.Nonnull;
 public class Result<SuccessObjectType> {
     private final RuntimeException t;
     private final SuccessObjectType object;
-
     /**
      * instantiate with one throwable (i.e. failure)
      * 
@@ -56,7 +56,7 @@ public class Result<SuccessObjectType> {
      * @throws IllegalStateException
      *             in case this object does not represent a failure
      */
-    public @Nonnull RuntimeException getThrowable() {
+    public @NotNull RuntimeException getThrowable() {
         if (t == null) {
             return new IllegalStateException("No throwable available");
         }
@@ -69,7 +69,7 @@ public class Result<SuccessObjectType> {
      * @throws IllegalStateException
      *             in case this object does not represent a success
      */
-    public @Nonnull SuccessObjectType getValue() {
+    public @NotNull SuccessObjectType getValue() {
         if (object == null) {
             throw new IllegalStateException(
                     "Success object is not set, but rather an exception is encapsulated: " + t.getMessage(), t);
index 50e5eb7..077ff39 100644 (file)
@@ -19,7 +19,6 @@ package org.apache.sling.models.impl.injectors;
 import java.lang.reflect.AnnotatedElement;
 import java.lang.reflect.Type;
 
-import javax.annotation.Nonnull;
 import javax.servlet.ServletRequest;
 
 import org.apache.commons.lang3.ObjectUtils;
@@ -35,6 +34,7 @@ import org.apache.sling.models.spi.ValuePreparer;
 import org.apache.sling.models.spi.injectorspecific.AbstractInjectAnnotationProcessor2;
 import org.apache.sling.models.spi.injectorspecific.InjectAnnotationProcessor2;
 import org.apache.sling.models.spi.injectorspecific.StaticInjectAnnotationProcessorFactory;
+import org.jetbrains.annotations.NotNull;
 import org.osgi.framework.Constants;
 
 @Component
@@ -43,13 +43,13 @@ import org.osgi.framework.Constants;
 public class BindingsInjector implements Injector, StaticInjectAnnotationProcessorFactory, ValuePreparer {
 
     @Override
-    public @Nonnull String getName() {
+    public @NotNull String getName() {
         return "script-bindings";
     }
 
     @Override
-    public Object getValue(@Nonnull Object adaptable, String name, @Nonnull Type type, @Nonnull AnnotatedElement element,
-            @Nonnull DisposalCallbackRegistry callbackRegistry) {
+    public Object getValue(@NotNull Object adaptable, String name, @NotNull Type type, @NotNull AnnotatedElement element,
+            @NotNull DisposalCallbackRegistry callbackRegistry) {
         if (adaptable == ObjectUtils.NULL) {
             return null;
         }
index 1bdb589..24a53dc 100644 (file)
@@ -23,8 +23,6 @@ import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
 
-import javax.annotation.Nonnull;
-
 import org.apache.commons.lang3.StringUtils;
 import org.apache.felix.scr.annotations.Component;
 import org.apache.felix.scr.annotations.Property;
@@ -38,6 +36,7 @@ import org.apache.sling.models.spi.Injector;
 import org.apache.sling.models.spi.injectorspecific.AbstractInjectAnnotationProcessor2;
 import org.apache.sling.models.spi.injectorspecific.InjectAnnotationProcessor2;
 import org.apache.sling.models.spi.injectorspecific.InjectAnnotationProcessorFactory2;
+import org.jetbrains.annotations.NotNull;
 import org.osgi.framework.Constants;
 
 @Component
@@ -46,13 +45,13 @@ import org.osgi.framework.Constants;
 public class ChildResourceInjector extends AbstractInjector implements Injector, InjectAnnotationProcessorFactory2 {
 
     @Override
-    public @Nonnull String getName() {
+    public @NotNull String getName() {
         return "child-resources";
     }
 
     @Override
-    public Object getValue(@Nonnull Object adaptable, String name, @Nonnull Type declaredType, @Nonnull AnnotatedElement element,
-            @Nonnull DisposalCallbackRegistry callbackRegistry) {
+    public Object getValue(@NotNull Object adaptable, String name, @NotNull Type declaredType, @NotNull AnnotatedElement element,
+            @NotNull DisposalCallbackRegistry callbackRegistry) {
         if (adaptable instanceof Resource) {
             Resource child = ((Resource) adaptable).getChild(name);
             if (child != null) {
index d3bddd3..bfea88e 100644 (file)
@@ -26,8 +26,6 @@ import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
 
-import javax.annotation.Nonnull;
-
 import org.apache.commons.lang3.StringUtils;
 import org.apache.felix.scr.annotations.Activate;
 import org.apache.felix.scr.annotations.Component;
@@ -43,6 +41,7 @@ import org.apache.sling.models.spi.Injector;
 import org.apache.sling.models.spi.injectorspecific.AbstractInjectAnnotationProcessor2;
 import org.apache.sling.models.spi.injectorspecific.InjectAnnotationProcessor2;
 import org.apache.sling.models.spi.injectorspecific.StaticInjectAnnotationProcessorFactory;
+import org.jetbrains.annotations.NotNull;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.Constants;
 import org.osgi.framework.InvalidSyntaxException;
@@ -61,7 +60,7 @@ public class OSGiServiceInjector implements Injector, StaticInjectAnnotationProc
     private BundleContext bundleContext;
 
     @Override
-    public @Nonnull String getName() {
+    public @NotNull String getName() {
         return "osgi-services";
     }
 
@@ -71,8 +70,8 @@ public class OSGiServiceInjector implements Injector, StaticInjectAnnotationProc
     }
 
     @Override
-    public Object getValue(@Nonnull Object adaptable, String name, @Nonnull Type type, @Nonnull AnnotatedElement element,
-            @Nonnull DisposalCallbackRegistry callbackRegistry) {
+    public Object getValue(@NotNull Object adaptable, String name, @NotNull Type type, @NotNull AnnotatedElement element,
+            @NotNull DisposalCallbackRegistry callbackRegistry) {
         OSGiService annotation = element.getAnnotation(OSGiService.class);
         String filterString = null;
         if (annotation != null) {
index 04dba37..4353988 100644 (file)
@@ -19,7 +19,6 @@ package org.apache.sling.models.impl.injectors;
 import java.lang.reflect.AnnotatedElement;
 import java.lang.reflect.Type;
 
-import javax.annotation.Nonnull;
 import javax.servlet.ServletRequest;
 
 import org.apache.felix.scr.annotations.Component;
@@ -32,6 +31,7 @@ import org.apache.sling.models.spi.Injector;
 import org.apache.sling.models.spi.injectorspecific.AbstractInjectAnnotationProcessor2;
 import org.apache.sling.models.spi.injectorspecific.InjectAnnotationProcessor2;
 import org.apache.sling.models.spi.injectorspecific.StaticInjectAnnotationProcessorFactory;
+import org.jetbrains.annotations.NotNull;
 import org.osgi.framework.Constants;
 
 @Component
@@ -40,13 +40,13 @@ import org.osgi.framework.Constants;
 public class RequestAttributeInjector implements Injector, StaticInjectAnnotationProcessorFactory {
 
     @Override
-    public @Nonnull String getName() {
+    public @NotNull String getName() {
         return "request-attributes";
     }
 
     @Override
-    public Object getValue(@Nonnull Object adaptable, String name, @Nonnull Type declaredType, @Nonnull AnnotatedElement element,
-            @Nonnull DisposalCallbackRegistry callbackRegistry) {
+    public Object getValue(@NotNull Object adaptable, String name, @NotNull Type declaredType, @NotNull AnnotatedElement element,
+            @NotNull DisposalCallbackRegistry callbackRegistry) {
         if (!(adaptable instanceof ServletRequest)) {
             return null;
         } else {
index 819bc1f..ea4a480 100644 (file)
@@ -23,8 +23,6 @@ import java.lang.reflect.Type;
 import java.util.ArrayList;
 import java.util.List;
 
-import javax.annotation.Nonnull;
-
 import org.apache.commons.lang3.ArrayUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.felix.scr.annotations.Component;
@@ -42,6 +40,7 @@ import org.apache.sling.models.spi.Injector;
 import org.apache.sling.models.spi.injectorspecific.AbstractInjectAnnotationProcessor2;
 import org.apache.sling.models.spi.injectorspecific.InjectAnnotationProcessor2;
 import org.apache.sling.models.spi.injectorspecific.StaticInjectAnnotationProcessorFactory;
+import org.jetbrains.annotations.NotNull;
 import org.osgi.framework.Constants;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -55,13 +54,13 @@ public class ResourcePathInjector extends AbstractInjector implements Injector,
     private static final Logger LOG = LoggerFactory.getLogger(ResourcePathInjector.class);
 
     @Override
-    public @Nonnull String getName() {
+    public @NotNull String getName() {
         return "resource-path";
     }
 
     @Override
-    public Object getValue(@Nonnull Object adaptable, String name, @Nonnull Type declaredType, @Nonnull AnnotatedElement element,
-            @Nonnull DisposalCallbackRegistry callbackRegistry) {
+    public Object getValue(@NotNull Object adaptable, String name, @NotNull Type declaredType, @NotNull AnnotatedElement element,
+            @NotNull DisposalCallbackRegistry callbackRegistry) {
         String[] resourcePaths = null;
         Path pathAnnotation = element.getAnnotation(Path.class);
         ResourcePath resourcePathAnnotation = element.getAnnotation(ResourcePath.class);
index eb064e6..c7bde9a 100644 (file)
@@ -19,8 +19,6 @@ package org.apache.sling.models.impl.injectors;
 import java.lang.reflect.AnnotatedElement;
 import java.lang.reflect.Type;
 
-import javax.annotation.Nonnull;
-
 import org.apache.felix.scr.annotations.Component;
 import org.apache.felix.scr.annotations.Property;
 import org.apache.felix.scr.annotations.Service;
@@ -33,6 +31,7 @@ import org.apache.sling.models.spi.Injector;
 import org.apache.sling.models.spi.injectorspecific.AbstractInjectAnnotationProcessor2;
 import org.apache.sling.models.spi.injectorspecific.InjectAnnotationProcessor2;
 import org.apache.sling.models.spi.injectorspecific.StaticInjectAnnotationProcessorFactory;
+import org.jetbrains.annotations.NotNull;
 import org.osgi.framework.Constants;
 
 /**
@@ -44,12 +43,12 @@ import org.osgi.framework.Constants;
 public class SelfInjector implements Injector, StaticInjectAnnotationProcessorFactory, AcceptsNullName {
 
     @Override
-    public @Nonnull String getName() {
+    public @NotNull String getName() {
         return "self";
     }
 
-    public Object getValue(@Nonnull Object adaptable, String name, @Nonnull Type type, @Nonnull AnnotatedElement element,
-            @Nonnull DisposalCallbackRegistry callbackRegistry) {
+    public Object getValue(@NotNull Object adaptable, String name, @NotNull Type type, @NotNull AnnotatedElement element,
+            @NotNull DisposalCallbackRegistry callbackRegistry) {
         // if the @Self annotation is present return the adaptable to be inserted directly or to be adapted from
         if (element.isAnnotationPresent(Self.class)) {
             return adaptable;
index f73486e..a2ab4b8 100644 (file)
@@ -19,7 +19,6 @@ package org.apache.sling.models.impl.injectors;
 import java.lang.reflect.AnnotatedElement;
 import java.lang.reflect.Type;
 
-import javax.annotation.Nonnull;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
@@ -40,6 +39,7 @@ import org.apache.sling.models.spi.Injector;
 import org.apache.sling.models.spi.injectorspecific.AbstractInjectAnnotationProcessor2;
 import org.apache.sling.models.spi.injectorspecific.InjectAnnotationProcessor2;
 import org.apache.sling.models.spi.injectorspecific.StaticInjectAnnotationProcessorFactory;
+import org.jetbrains.annotations.NotNull;
 import org.osgi.framework.Constants;
 
 /**
@@ -55,16 +55,16 @@ public final class SlingObjectInjector implements Injector, StaticInjectAnnotati
     /**
      * Injector name
      */
-    public static final @Nonnull String NAME = "sling-object";
+    public static final @NotNull String NAME = "sling-object";
 
     @Override
-    public @Nonnull String getName() {
+    public @NotNull String getName() {
         return NAME;
     }
 
     @Override
-    public Object getValue(final @Nonnull Object adaptable, final String name, final @Nonnull Type type, final @Nonnull AnnotatedElement element,
-            final @Nonnull DisposalCallbackRegistry callbackRegistry) {
+    public Object getValue(final @NotNull Object adaptable, final String name, final @NotNull Type type, final @NotNull AnnotatedElement element,
+            final @NotNull DisposalCallbackRegistry callbackRegistry) {
 
         // only class types are supported
         if (!(type instanceof Class<?>)) {
index ea835c0..6606585 100644 (file)
@@ -24,8 +24,6 @@ import java.util.Arrays;
 import java.util.Collection;
 import java.util.List;
 
-import javax.annotation.Nonnull;
-
 import org.apache.commons.lang3.ClassUtils;
 import org.apache.commons.lang3.ObjectUtils;
 import org.apache.commons.lang3.StringUtils;
@@ -42,6 +40,7 @@ import org.apache.sling.models.spi.ValuePreparer;
 import org.apache.sling.models.spi.injectorspecific.AbstractInjectAnnotationProcessor2;
 import org.apache.sling.models.spi.injectorspecific.InjectAnnotationProcessor;
 import org.apache.sling.models.spi.injectorspecific.InjectAnnotationProcessorFactory;
+import org.jetbrains.annotations.NotNull;
 import org.osgi.framework.Constants;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -55,13 +54,13 @@ public class ValueMapInjector extends AbstractInjector implements Injector, Inje
     private static final Logger log = LoggerFactory.getLogger(ValueMapInjector.class);
 
     @Override
-    public @Nonnull String getName() {
+    public @NotNull String getName() {
         return "valuemap";
     }
 
     @Override
-    public Object getValue(@Nonnull Object adaptable, String name, @Nonnull Type type, @Nonnull AnnotatedElement element,
-            @Nonnull DisposalCallbackRegistry callbackRegistry) {
+    public Object getValue(@NotNull Object adaptable, String name, @NotNull Type type, @NotNull AnnotatedElement element,
+            @NotNull DisposalCallbackRegistry callbackRegistry) {
         if (adaptable == ObjectUtils.NULL) {
             return null;
         }
index 7f8b11c..8d09a7c 100644 (file)
@@ -21,12 +21,11 @@ import org.apache.sling.api.resource.Resource;
 import org.apache.sling.api.resource.ResourceWrapper;
 import org.apache.sling.api.wrappers.SlingHttpServletRequestWrapper;
 import org.apache.sling.models.spi.ViaProvider;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import javax.annotation.CheckForNull;
-import javax.annotation.Nonnull;
-
 public abstract class AbstractResourceTypeViaProvider implements ViaProvider {
 
     protected final Logger log = LoggerFactory.getLogger(getClass());
@@ -62,9 +61,9 @@ public abstract class AbstractResourceTypeViaProvider implements ViaProvider {
          }
     }
 
-    protected abstract boolean handle(@Nonnull String value);
+    protected abstract boolean handle(@NotNull String value);
 
-    protected abstract @CheckForNull String getResourceType(@Nonnull Resource resource, @Nonnull String value);
+    protected abstract @Nullable String getResourceType(@NotNull Resource resource, @NotNull String value);
 
     private class ResourceTypeForcingResourceWrapper extends ResourceWrapper {
 
index 130fca0..07b865a 100644 (file)
  */
 package org.apache.sling.models.impl.via;
 
-import javax.annotation.Nonnull;
-
 import org.apache.commons.lang3.StringUtils;
 import org.apache.felix.scr.annotations.Component;
 import org.apache.felix.scr.annotations.Service;
 import org.apache.sling.api.resource.Resource;
 import org.apache.sling.models.annotations.ViaProviderType;
 import org.apache.sling.models.annotations.via.ForcedResourceType;
+import org.jetbrains.annotations.NotNull;
 
 @Component
 @Service
@@ -34,12 +33,12 @@ public class ForcedResourceTypeViaProvider extends AbstractResourceTypeViaProvid
     }
 
     @Override
-    protected String getResourceType(@Nonnull Resource resource, @Nonnull String value) {
+    protected String getResourceType(@NotNull Resource resource, @NotNull String value) {
         return value;
     }
 
     @Override
-    protected boolean handle(@Nonnull String value) {
+    protected boolean handle(@NotNull String value) {
         return StringUtils.isNotBlank(value);
     }
 }
index 11eb8b3..38481f1 100644 (file)
@@ -21,8 +21,7 @@ import org.apache.felix.scr.annotations.Service;
 import org.apache.sling.api.resource.Resource;
 import org.apache.sling.models.annotations.ViaProviderType;
 import org.apache.sling.models.annotations.via.ResourceSuperType;
-
-import javax.annotation.Nonnull;
+import org.jetbrains.annotations.NotNull;
 
 @Component
 @Service
@@ -34,12 +33,12 @@ public class ResourceSuperTypeViaProvider extends AbstractResourceTypeViaProvide
     }
 
     @Override
-    protected String getResourceType(@Nonnull Resource resource, @Nonnull String value) {
+    protected String getResourceType(@NotNull Resource resource, @NotNull String value) {
         return resource.getResourceResolver().getParentResourceType(resource);
     }
 
     @Override
-    protected boolean handle(@Nonnull String value) {
+    protected boolean handle(@NotNull String value) {
         return true;
     }
 }
index 96bdc56..73bdb35 100644 (file)
@@ -42,6 +42,8 @@ import org.apache.sling.models.testmodels.classes.ConstructorWithExceptionModel;
 import org.apache.sling.models.testmodels.classes.DefaultStringModel;
 import org.apache.sling.models.testmodels.classes.InvalidModelWithMissingAnnotation;
 import org.apache.sling.models.testmodels.classes.ResourceModelWithRequiredField;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
@@ -51,9 +53,6 @@ import org.mockito.runners.MockitoJUnitRunner;
 import org.osgi.framework.BundleContext;
 import org.osgi.service.component.ComponentContext;
 
-import javax.annotation.CheckForNull;
-import javax.annotation.Nonnull;
-
 @RunWith(MockitoJUnitRunner.class)
 public class AdapterFactoryTest {
     @Mock
@@ -210,14 +209,14 @@ public class AdapterFactoryTest {
 
     private static class FirstStringExporter implements ModelExporter {
         @Override
-        public boolean isSupported(@Nonnull Class<?> aClass) {
+        public boolean isSupported(@NotNull Class<?> aClass) {
             return aClass == String.class;
         }
 
-        @CheckForNull
+        @Nullable
         @Override
         @SuppressWarnings("unchecked")
-        public <T> T export(@Nonnull Object o, @Nonnull Class<T> aClass, @Nonnull Map<String, String> map) throws ExportException {
+        public <T> T export(@NotNull Object o, @NotNull Class<T> aClass, @NotNull Map<String, String> map) throws ExportException {
             if (aClass == String.class) {
                 return (T) "Export from first";
             } else {
@@ -225,7 +224,7 @@ public class AdapterFactoryTest {
             }
         }
 
-        @Nonnull
+        @NotNull
         @Override
         public String getName() {
             return "first";
@@ -235,13 +234,13 @@ public class AdapterFactoryTest {
     @SuppressWarnings("unchecked")
     private static class SecondStringExporter implements ModelExporter {
         @Override
-        public boolean isSupported(@Nonnull Class<?> aClass) {
+        public boolean isSupported(@NotNull Class<?> aClass) {
             return aClass == String.class;
         }
 
-        @CheckForNull
+        @Nullable
         @Override
-        public <T> T export(@Nonnull Object o, @Nonnull Class<T> aClass, @Nonnull Map<String, String> map) throws ExportException {
+        public <T> T export(@NotNull Object o, @NotNull Class<T> aClass, @NotNull Map<String, String> map) throws ExportException {
             if (aClass == String.class) {
                 return (T) "Export from second";
             } else {
@@ -249,7 +248,7 @@ public class AdapterFactoryTest {
             }
         }
 
-        @Nonnull
+        @NotNull
         @Override
         public String getName() {
             return "second";
@@ -259,13 +258,13 @@ public class AdapterFactoryTest {
     @SuppressWarnings("unchecked")
     private static class FirstIntegerExporter implements ModelExporter {
         @Override
-        public boolean isSupported(@Nonnull Class<?> aClass) {
+        public boolean isSupported(@NotNull Class<?> aClass) {
             return aClass == Integer.class;
         }
 
-        @CheckForNull
+        @Nullable
         @Override
-        public <T> T export(@Nonnull Object o, @Nonnull Class<T> aClass, @Nonnull Map<String, String> map) throws ExportException {
+        public <T> T export(@NotNull Object o, @NotNull Class<T> aClass, @NotNull Map<String, String> map) throws ExportException {
             if (aClass == Integer.class) {
                 return (T) Integer.valueOf(42);
             } else {
@@ -273,7 +272,7 @@ public class AdapterFactoryTest {
             }
         }
 
-        @Nonnull
+        @NotNull
         @Override
         public String getName() {
             return "first";
index b0c30a9..99ec6b5 100644 (file)
@@ -23,6 +23,8 @@ import org.apache.sling.models.annotations.Model;
 import org.apache.sling.models.spi.DisposalCallback;
 import org.apache.sling.models.spi.DisposalCallbackRegistry;
 import org.apache.sling.models.spi.Injector;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -33,8 +35,6 @@ import org.mockito.stubbing.Answer;
 import org.osgi.framework.BundleContext;
 import org.osgi.service.component.ComponentContext;
 
-import javax.annotation.CheckForNull;
-import javax.annotation.Nonnull;
 import javax.inject.Inject;
 import javax.servlet.ServletContext;
 import javax.servlet.ServletRequestEvent;
@@ -146,15 +146,15 @@ public class RequestDisposalTest {
     }
 
     private class DisposedInjector implements Injector {
-        @Nonnull
+        @NotNull
         @Override
         public String getName() {
             return "disposed";
         }
 
-        @CheckForNull
+        @Nullable
         @Override
-        public Object getValue(@Nonnull Object o, String s, @Nonnull Type type, @Nonnull AnnotatedElement annotatedElement, @Nonnull DisposalCallbackRegistry disposalCallbackRegistry) {
+        public Object getValue(@NotNull Object o, String s, @NotNull Type type, @NotNull AnnotatedElement annotatedElement, @NotNull DisposalCallbackRegistry disposalCallbackRegistry) {
             disposalCallbackRegistry.addDisposalCallback(callback);
             return "teststring";
         }
index fa19189..84c61ae 100644 (file)
@@ -19,25 +19,24 @@ package org.apache.sling.models.impl.injector;
 import java.lang.reflect.AnnotatedElement;
 import java.lang.reflect.Type;
 
-import javax.annotation.Nonnull;
-
 import org.apache.sling.models.spi.DisposalCallbackRegistry;
 import org.apache.sling.models.spi.Injector;
 import org.apache.sling.models.spi.injectorspecific.AbstractInjectAnnotationProcessor;
 import org.apache.sling.models.spi.injectorspecific.InjectAnnotationProcessor;
 import org.apache.sling.models.spi.injectorspecific.InjectAnnotationProcessorFactory;
+import org.jetbrains.annotations.NotNull;
 
 @SuppressWarnings("deprecation")
 public class CustomAnnotationInjector implements Injector, InjectAnnotationProcessorFactory {
 
     @Override
-    public @Nonnull String getName() {
+    public @NotNull String getName() {
         return "with-annotation";
     }
 
     @Override
-    public Object getValue(@Nonnull Object adaptable, String name, @Nonnull Type declaredType, @Nonnull AnnotatedElement element,
-            @Nonnull DisposalCallbackRegistry callbackRegistry) {
+    public Object getValue(@NotNull Object adaptable, String name, @NotNull Type declaredType, @NotNull AnnotatedElement element,
+            @NotNull DisposalCallbackRegistry callbackRegistry) {
         if (name.equals("customString")) {
             return "custom value";
         } else {
index 5631595..3b97ae9 100644 (file)
@@ -19,21 +19,20 @@ package org.apache.sling.models.impl.injector;
 import java.lang.reflect.AnnotatedElement;
 import java.lang.reflect.Type;
 
-import javax.annotation.Nonnull;
-
 import org.apache.sling.models.spi.DisposalCallbackRegistry;
 import org.apache.sling.models.spi.Injector;
+import org.jetbrains.annotations.NotNull;
 
 public class SimpleInjector implements Injector {
 
     @Override
-    public @Nonnull String getName() {
+    public @NotNull String getName() {
         return "test";
     }
 
     @Override
-    public Object getValue(@Nonnull Object adaptable, String name, @Nonnull Type declaredType, @Nonnull AnnotatedElement element,
-            @Nonnull DisposalCallbackRegistry callbackRegistry) {
+    public Object getValue(@NotNull Object adaptable, String name, @NotNull Type declaredType, @NotNull AnnotatedElement element,
+            @NotNull DisposalCallbackRegistry callbackRegistry) {
         if (name.equals("testString") && declaredType.equals(String.class)) {
             return "test string";
         } else {