This is an automated email from the ASF dual-hosted git repository. sseifert pushed a commit to branch feature/SLING-7803-nullability in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-testing-caconfig-mock-plugin.git
commit d59eed2bbf0f1eb57ae7aec253ebdefc91bcdb67 Author: sseifert <[email protected]> AuthorDate: Mon Aug 6 13:52:38 2018 +0200 SLING-7803 apply jetbrains nullability annotations on public API --- pom.xml | 17 ++++++---- .../mock/caconfig/ConfigurationMetadataUtil.java | 12 +++++--- .../testing/mock/caconfig/ContextPlugins.java | 10 +++--- .../mock/caconfig/MockContextAwareConfig.java | 36 +++++++++++++--------- .../sling/testing/mock/caconfig/package-info.java | 2 +- .../testing/mock/caconfig/ContextPluginsTest.java | 1 + .../mock/caconfig/MockContextAwareConfigTest.java | 1 + 7 files changed, 49 insertions(+), 30 deletions(-) diff --git a/pom.xml b/pom.xml index 2a91c03..a64f3ee 100644 --- a/pom.xml +++ b/pom.xml @@ -23,7 +23,7 @@ <parent> <groupId>org.apache.sling</groupId> <artifactId>sling</artifactId> - <version>30</version> + <version>34-SNAPSHOT</version> <relativePath /> </parent> @@ -51,6 +51,11 @@ <dependencies> <dependency> + <groupId>org.osgi</groupId> + <artifactId>org.osgi.annotation.versioning</artifactId> + <scope>provided</scope> + </dependency> + <dependency> <groupId>org.apache.sling</groupId> <artifactId>org.apache.sling.caconfig.api</artifactId> <version>1.1.0</version> @@ -76,14 +81,14 @@ </dependency> <dependency> <groupId>org.apache.sling</groupId> - <artifactId>org.apache.sling.testing.osgi-mock</artifactId> - <version>2.2.4</version> + <artifactId>org.apache.sling.testing.sling-mock</artifactId> + <version>2.3.0-SNAPSHOT</version> <scope>provided</scope> </dependency> + <!-- Nullability annotations --> <dependency> - <groupId>org.apache.sling</groupId> - <artifactId>org.apache.sling.testing.sling-mock</artifactId> - <version>1.9.0</version> + <groupId>org.jetbrains</groupId> + <artifactId>annotations</artifactId> <scope>provided</scope> </dependency> </dependencies> diff --git a/src/main/java/org/apache/sling/testing/mock/caconfig/ConfigurationMetadataUtil.java b/src/main/java/org/apache/sling/testing/mock/caconfig/ConfigurationMetadataUtil.java index d12d9e5..fff4798 100644 --- a/src/main/java/org/apache/sling/testing/mock/caconfig/ConfigurationMetadataUtil.java +++ b/src/main/java/org/apache/sling/testing/mock/caconfig/ConfigurationMetadataUtil.java @@ -40,6 +40,7 @@ import org.apache.commons.lang3.StringUtils; import org.apache.sling.caconfig.annotation.Configuration; import org.apache.sling.testing.mock.osgi.ManifestScanner; import org.apache.sling.testing.mock.osgi.MockOsgi; +import org.jetbrains.annotations.NotNull; import org.osgi.framework.Bundle; import org.osgi.framework.BundleContext; import org.osgi.framework.BundleEvent; @@ -51,10 +52,11 @@ import org.reflections.Reflections; /** * Helper methods for registering Configuration annotation classes from the classpath. */ +@SuppressWarnings("null") final class ConfigurationMetadataUtil { - private static final String[] CONFIGURATION_CLASSES_FROM_MANIFEST; - private static final ConcurrentMap<String, List<Class>> CONFIGURATION_CLASSES_FOR_PACKAGES = new ConcurrentHashMap<String, List<Class>>(); + private static final @NotNull String @NotNull [] CONFIGURATION_CLASSES_FROM_MANIFEST; + private static final @NotNull ConcurrentMap<String, List<Class>> CONFIGURATION_CLASSES_FOR_PACKAGES = new ConcurrentHashMap<String, List<Class>>(); static { // suppress log entries from Reflections library @@ -77,7 +79,7 @@ final class ConfigurationMetadataUtil { * @param bundleContext Bundle context * @param classNames Java class names */ - public static void registerAnnotationClasses(BundleContext bundleContext, String... classNames) { + public static void registerAnnotationClasses(@NotNull BundleContext bundleContext, @NotNull String @NotNull ... classNames) { Bundle bundle = new RegisterConfigurationMetadataBundle(bundleContext, Bundle.ACTIVE, classNames); BundleEvent event = new BundleEvent(BundleEvent.STARTED, bundle); MockOsgi.sendBundleEvent(bundleContext, event); @@ -88,7 +90,7 @@ final class ConfigurationMetadataUtil { * @param bundleContext Bundle context * @param classNames Java class names */ - public static void registerAnnotationClasses(BundleContext bundleContext, Class... classes) { + public static void registerAnnotationClasses(@NotNull BundleContext bundleContext, @NotNull Class @NotNull ... classes) { String[] classNames = new String[classes.length]; for (int i = 0; i < classes.length; i++) { classNames[i] = classes[i].getName(); @@ -111,7 +113,7 @@ final class ConfigurationMetadataUtil { * @param packageNames Package names * @return List of classes */ - public static Collection<Class> getConfigurationClassesForPackages(String packageNames) { + public static Collection<Class> getConfigurationClassesForPackages(@NotNull String packageNames) { List<Class> classes = CONFIGURATION_CLASSES_FOR_PACKAGES.get(packageNames); if (classes == null) { classes = new ArrayList<Class>(); diff --git a/src/main/java/org/apache/sling/testing/mock/caconfig/ContextPlugins.java b/src/main/java/org/apache/sling/testing/mock/caconfig/ContextPlugins.java index 03e124b..75df3f9 100644 --- a/src/main/java/org/apache/sling/testing/mock/caconfig/ContextPlugins.java +++ b/src/main/java/org/apache/sling/testing/mock/caconfig/ContextPlugins.java @@ -30,6 +30,7 @@ import org.apache.sling.caconfig.resource.impl.def.DefaultContextPathStrategy; import org.apache.sling.testing.mock.osgi.context.AbstractContextPlugin; import org.apache.sling.testing.mock.osgi.context.ContextPlugin; import org.apache.sling.testing.mock.sling.context.SlingContextImpl; +import org.jetbrains.annotations.NotNull; import org.osgi.annotation.versioning.ProviderType; /** @@ -46,9 +47,9 @@ public final class ContextPlugins { /** * Context plugin for Sling Context-Aware Configuration. */ - public static final ContextPlugin<? extends SlingContextImpl> CACONFIG = new AbstractContextPlugin<SlingContextImpl>() { + public static final @NotNull ContextPlugin<? extends SlingContextImpl> CACONFIG = new AbstractContextPlugin<SlingContextImpl>() { @Override - public void afterSetUp(SlingContextImpl context) throws Exception { + public void afterSetUp(@NotNull SlingContextImpl context) throws Exception { registerConfigurationResourceResolver(context); registerConfigurationResolver(context); registerConfigurationManagement(context); @@ -63,9 +64,9 @@ public final class ContextPlugins { /** * Context plugin for Sling Context-Aware Configuration (without the default implementations). */ - public static final ContextPlugin<? extends SlingContextImpl> CACONFIG_NODEF = new AbstractContextPlugin<SlingContextImpl>() { + public static final @NotNull ContextPlugin<? extends SlingContextImpl> CACONFIG_NODEF = new AbstractContextPlugin<SlingContextImpl>() { @Override - public void afterSetUp(SlingContextImpl context) throws Exception { + public void afterSetUp(@NotNull SlingContextImpl context) throws Exception { registerConfigurationResourceResolver(context); registerConfigurationResolver(context); registerConfigurationManagement(context); @@ -147,6 +148,7 @@ public final class ContextPlugins { context.registerInjectActivateService(new AnnotationClassConfigurationMetadataProvider()); } + @SuppressWarnings("null") private static boolean registerByClassName(SlingContextImpl context, String className) { try { Class<?> clazz = Class.forName(className); diff --git a/src/main/java/org/apache/sling/testing/mock/caconfig/MockContextAwareConfig.java b/src/main/java/org/apache/sling/testing/mock/caconfig/MockContextAwareConfig.java index ac13366..a77e512 100644 --- a/src/main/java/org/apache/sling/testing/mock/caconfig/MockContextAwareConfig.java +++ b/src/main/java/org/apache/sling/testing/mock/caconfig/MockContextAwareConfig.java @@ -31,6 +31,7 @@ import org.apache.sling.caconfig.spi.ConfigurationCollectionPersistData; import org.apache.sling.caconfig.spi.ConfigurationPersistData; import org.apache.sling.testing.mock.osgi.MapUtil; import org.apache.sling.testing.mock.sling.context.SlingContextImpl; +import org.jetbrains.annotations.NotNull; import org.osgi.annotation.versioning.ProviderType; /** @@ -48,7 +49,7 @@ public final class MockContextAwareConfig { * @param context Sling context * @param classNames Java class names */ - public static void registerAnnotationClasses(SlingContextImpl context, String... classNames) { + public static void registerAnnotationClasses(@NotNull SlingContextImpl context, @NotNull String @NotNull ... classNames) { ConfigurationMetadataUtil.registerAnnotationClasses(context.bundleContext(), classNames); } @@ -57,7 +58,7 @@ public final class MockContextAwareConfig { * @param context Sling context * @param classes Java classes */ - public static void registerAnnotationClasses(SlingContextImpl context, Class... classes) { + public static void registerAnnotationClasses(@NotNull SlingContextImpl context, @NotNull Class @NotNull ... classes) { ConfigurationMetadataUtil.registerAnnotationClasses(context.bundleContext(), classes); } @@ -66,7 +67,8 @@ public final class MockContextAwareConfig { * @param context Sling context * @param packageNames Java package names */ - public static void registerAnnotationPackages(SlingContextImpl context, String... packageNames) { + @SuppressWarnings("null") + public static void registerAnnotationPackages(@NotNull SlingContextImpl context, @NotNull String @NotNull ... packageNames) { Collection<Class> classes = ConfigurationMetadataUtil.getConfigurationClassesForPackages(StringUtils.join(packageNames, ",")); registerAnnotationClasses(context, classes.toArray(new Class[classes.size()])); } @@ -79,8 +81,8 @@ public final class MockContextAwareConfig { * @param configClass Configuration class * @param values Configuration values */ - public static void writeConfiguration(SlingContextImpl context, String contextPath, Class<?> configClass, - Map<String, Object> values) { + public static void writeConfiguration(@NotNull SlingContextImpl context, @NotNull String contextPath, @NotNull Class<?> configClass, + @NotNull Map<String, Object> values) { writeConfiguration(context, contextPath, getConfigurationName(configClass), values); } @@ -92,8 +94,9 @@ public final class MockContextAwareConfig { * @param configName Config name * @param values Configuration values */ - public static void writeConfiguration(SlingContextImpl context, String contextPath, String configName, - Map<String, Object> values) { + @SuppressWarnings("null") + public static void writeConfiguration(@NotNull SlingContextImpl context, @NotNull String contextPath, @NotNull String configName, + @NotNull Map<String, Object> values) { ConfigurationManager configManager = context.getService(ConfigurationManager.class); Resource contextResource = context.resourceResolver().getResource(contextPath); configManager.persistConfiguration(contextResource, configName, new ConfigurationPersistData(values)); @@ -107,7 +110,7 @@ public final class MockContextAwareConfig { * @param configClass Configuration class * @param values Configuration values */ - public static void writeConfiguration(SlingContextImpl context, String contextPath, Class<?> configClass, Object... values) { + public static void writeConfiguration(@NotNull SlingContextImpl context, @NotNull String contextPath, Class<?> configClass, @NotNull Object @NotNull ... values) { writeConfiguration(context, contextPath, getConfigurationName(configClass), values); } @@ -119,7 +122,7 @@ public final class MockContextAwareConfig { * @param configName Config name * @param values Configuration values */ - public static void writeConfiguration(SlingContextImpl context, String contextPath, String configName, Object... values) { + public static void writeConfiguration(@NotNull SlingContextImpl context, @NotNull String contextPath, @NotNull String configName, @NotNull Object @NotNull ... values) { writeConfiguration(context, contextPath, configName, MapUtil.toMap(values)); } @@ -131,8 +134,8 @@ public final class MockContextAwareConfig { * @param configClass Configuration class * @param values Configuration values */ - public static void writeConfigurationCollection(SlingContextImpl context, String contextPath, Class<?> configClass, - Collection<Map<String, Object>> values) { + public static void writeConfigurationCollection(@NotNull SlingContextImpl context, @NotNull String contextPath, @NotNull Class<?> configClass, + @NotNull Collection<@NotNull Map<String, Object>> values) { writeConfigurationCollection(context, contextPath, getConfigurationName(configClass), values); } @@ -144,10 +147,14 @@ public final class MockContextAwareConfig { * @param configName Config name * @param values Configuration values */ - public static void writeConfigurationCollection(SlingContextImpl context, String contextPath, String configName, - Collection<Map<String, Object>> values) { + @SuppressWarnings("null") + public static void writeConfigurationCollection(@NotNull SlingContextImpl context, @NotNull String contextPath, @NotNull String configName, + @NotNull Collection<@NotNull Map<String, Object>> values) { ConfigurationManager configManager = context.getService(ConfigurationManager.class); Resource contextResource = context.resourceResolver().getResource(contextPath); + if (contextResource == null) { + throw new IllegalArgumentException("No resource found at" + contextPath); + } List<ConfigurationPersistData> items = new ArrayList<>(); int index = 0; for (Map<String, Object> map : values) { @@ -157,7 +164,8 @@ public final class MockContextAwareConfig { new ConfigurationCollectionPersistData(items)); } - private static String getConfigurationName(Class<?> configClass) { + @SuppressWarnings("null") + private static @NotNull String getConfigurationName(Class<?> configClass) { Configuration annotation = configClass.getAnnotation(Configuration.class); if (annotation != null && StringUtils.isNotBlank(annotation.name())) { return annotation.name(); diff --git a/src/main/java/org/apache/sling/testing/mock/caconfig/package-info.java b/src/main/java/org/apache/sling/testing/mock/caconfig/package-info.java index 99d628c..cfde06a 100644 --- a/src/main/java/org/apache/sling/testing/mock/caconfig/package-info.java +++ b/src/main/java/org/apache/sling/testing/mock/caconfig/package-info.java @@ -19,5 +19,5 @@ /** * Apache Sling Context-Aware Configuration Mock Plugin */ [email protected]("1.1.0") [email protected]("1.1.1") package org.apache.sling.testing.mock.caconfig; diff --git a/src/test/java/org/apache/sling/testing/mock/caconfig/ContextPluginsTest.java b/src/test/java/org/apache/sling/testing/mock/caconfig/ContextPluginsTest.java index d331e19..6ddd912 100644 --- a/src/test/java/org/apache/sling/testing/mock/caconfig/ContextPluginsTest.java +++ b/src/test/java/org/apache/sling/testing/mock/caconfig/ContextPluginsTest.java @@ -32,6 +32,7 @@ import org.junit.Before; import org.junit.Rule; import org.junit.Test; +@SuppressWarnings("null") public class ContextPluginsTest { private static final String CONFIG_NAME = "testConfig"; diff --git a/src/test/java/org/apache/sling/testing/mock/caconfig/MockContextAwareConfigTest.java b/src/test/java/org/apache/sling/testing/mock/caconfig/MockContextAwareConfigTest.java index 4c71660..ecd1bbb 100644 --- a/src/test/java/org/apache/sling/testing/mock/caconfig/MockContextAwareConfigTest.java +++ b/src/test/java/org/apache/sling/testing/mock/caconfig/MockContextAwareConfigTest.java @@ -39,6 +39,7 @@ import org.junit.Test; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; +@SuppressWarnings("null") public class MockContextAwareConfigTest { @Rule
