This is an automated email from the ASF dual-hosted git repository. sseifert pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-caconfig-impl.git
commit 5ceec38a008eae891b5389f53b88e2c98edd026b Author: Stefan Seifert <[email protected]> AuthorDate: Wed Dec 15 19:17:06 2021 +0100 cosmetic: eliminate some code warnings --- .../impl/ConfigurationBuilderAdapterFactory.java | 2 +- .../caconfig/impl/ConfigurationBuilderImpl.java | 20 +++++++----- .../impl/metadata/AnnotationClassParser.java | 38 ++++++++++++---------- .../caconfig/management/impl/ValueInfoImpl.java | 12 ++++--- .../impl/console/CAConfigInventoryPrinter.java | 25 +++++++------- .../ConfigurationBindingsValueProviderTest.java | 2 ++ .../caconfig/impl/metadata/BundleEventUtil.java | 15 +++++---- ...igurationManagerImplCustomPersistence2Test.java | 1 + ...tionPersistenceStrategyMultiplexerImplTest.java | 3 +- 9 files changed, 64 insertions(+), 54 deletions(-) diff --git a/src/main/java/org/apache/sling/caconfig/impl/ConfigurationBuilderAdapterFactory.java b/src/main/java/org/apache/sling/caconfig/impl/ConfigurationBuilderAdapterFactory.java index 464b574..099a331 100644 --- a/src/main/java/org/apache/sling/caconfig/impl/ConfigurationBuilderAdapterFactory.java +++ b/src/main/java/org/apache/sling/caconfig/impl/ConfigurationBuilderAdapterFactory.java @@ -38,7 +38,7 @@ public class ConfigurationBuilderAdapterFactory implements AdapterFactory { private ConfigurationResolver resolver; @Override - @SuppressWarnings("unchecked") + @SuppressWarnings({ "unchecked", "null" }) public <AdapterType> AdapterType getAdapter(@NotNull final Object adaptable, @NotNull final Class<AdapterType> type) { if (adaptable instanceof Resource && type == ConfigurationBuilder.class) { return (AdapterType) resolver.get((Resource) adaptable); diff --git a/src/main/java/org/apache/sling/caconfig/impl/ConfigurationBuilderImpl.java b/src/main/java/org/apache/sling/caconfig/impl/ConfigurationBuilderImpl.java index 307de4e..c8e092e 100644 --- a/src/main/java/org/apache/sling/caconfig/impl/ConfigurationBuilderImpl.java +++ b/src/main/java/org/apache/sling/caconfig/impl/ConfigurationBuilderImpl.java @@ -66,7 +66,7 @@ class ConfigurationBuilderImpl implements ConfigurationBuilder { private final String configName; private static final Logger log = LoggerFactory.getLogger(ConfigurationBuilderImpl.class); - + public ConfigurationBuilderImpl(final Resource resource, final ConfigurationResolver configurationResolver, final ConfigurationResourceResolvingStrategy configurationResourceResolvingStrategy, @@ -158,7 +158,7 @@ class ConfigurationBuilderImpl implements ConfigurationBuilder { private <T> Collection<T> getConfigResourceCollection(String configName, Class<T> clazz, Converter<T> converter) { if (this.contentResource != null) { validateConfigurationName(configName); - + // get all possible colection parent config names Collection<String> collectionParentConfigNames = configurationPersistenceStrategy.getAllCollectionParentConfigNames(configName); List<Iterator<Resource>> resourceInheritanceChains = new ArrayList<>(); @@ -183,7 +183,7 @@ class ConfigurationBuilderImpl implements ConfigurationBuilder { return Collections.emptyList(); } } - + @SuppressWarnings("unchecked") private <T> T convert(final Iterator<Resource> resourceInhertianceChain, final Class<T> clazz, final Converter<T> converter, final String name, final boolean isCollection) { @@ -223,15 +223,15 @@ class ConfigurationBuilderImpl implements ConfigurationBuilder { log.trace("+ Found config resource for context path " + contentResource.getPath() + ": " + configResource.getPath() + " " + MapUtil.traceOutput(configResource.getValueMap())); } - + // if no config resource found still check for overrides if (configResource == null && contentResource != null) { configResource = configurationOverrideMultiplexer.overrideProperties(contentResource.getPath(), name, (Resource)null, contentResource.getResourceResolver()); } - + return converter.convert(configResource, clazz, conversionName, isCollection); } - + /** * Apply default values from configuration metadata (where no real data is present). * @param resource Resource @@ -248,7 +248,7 @@ class ConfigurationBuilderImpl implements ConfigurationBuilder { } return new ConfigurationResourceWrapper(resource, new ValueMapDecorator(updatedMap)); } - + /** * Apply default values from configuration metadata (where no real data is present). * @param props Properties @@ -283,6 +283,7 @@ class ConfigurationBuilderImpl implements ConfigurationBuilder { // --- Annotation class support --- @Override + @SuppressWarnings("null") public @NotNull <T> T as(@NotNull final Class<T> clazz) { final String name = getConfigurationNameForAnnotationClass(clazz); if (log.isDebugEnabled()) { @@ -336,7 +337,7 @@ class ConfigurationBuilderImpl implements ConfigurationBuilder { }); } } - + // --- ValueMap support --- @Override @@ -368,7 +369,7 @@ class ConfigurationBuilderImpl implements ConfigurationBuilder { } } } - + // --- Adaptable support --- @Override @@ -388,6 +389,7 @@ class ConfigurationBuilderImpl implements ConfigurationBuilder { } private class AdaptableConverter<T> implements Converter<T> { + @SuppressWarnings("null") @Override public T convert(Resource resource, Class<T> clazz, String configName, boolean isCollection) { if (resource == null || clazz == ConfigurationBuilder.class) { diff --git a/src/main/java/org/apache/sling/caconfig/impl/metadata/AnnotationClassParser.java b/src/main/java/org/apache/sling/caconfig/impl/metadata/AnnotationClassParser.java index 38cfb7f..8b2520c 100644 --- a/src/main/java/org/apache/sling/caconfig/impl/metadata/AnnotationClassParser.java +++ b/src/main/java/org/apache/sling/caconfig/impl/metadata/AnnotationClassParser.java @@ -39,9 +39,9 @@ import org.apache.sling.caconfig.spi.metadata.PropertyMetadata; * Helper methods for parsing metadata from configuration annotation classes. */ public final class AnnotationClassParser { - + private static final Pattern METHOD_NAME_MAPPING = Pattern.compile("(\\$\\$)|(\\$)|(__)|(_)"); - + private AnnotationClassParser() { // static methods only } @@ -55,12 +55,13 @@ public final class AnnotationClassParser { public static boolean isContextAwareConfig(Class<?> clazz) { return clazz.isAnnotation() && clazz.isAnnotationPresent(Configuration.class); } - + /** * Get configuration name for given configuration annotation class. * @param clazz Annotation class * @return Configuration name */ + @SuppressWarnings("unused") public static String getConfigurationName(Class<?> clazz) { Configuration configAnnotation = clazz.getAnnotation(Configuration.class); if (configAnnotation == null) { @@ -111,18 +112,19 @@ public final class AnnotationClassParser { matcher.appendTail(mappedName); return mappedName.toString(); } - + /** * Build configuration metadata by parsing the given annotation interface class and it's configuration annotations. * @param clazz Configuration annotation class * @return Configuration metadata */ + @SuppressWarnings("unused") public static ConfigurationMetadata buildConfigurationMetadata(Class<?> clazz) { Configuration configAnnotation = clazz.getAnnotation(Configuration.class); if (configAnnotation == null) { throw new IllegalArgumentException("Class has not @Configuration annotation: " + clazz.getName()); } - + // configuration metadata and property metadata String configName = getConfigurationName(clazz, configAnnotation); ConfigurationMetadata configMetadata = new ConfigurationMetadata(configName, @@ -131,10 +133,10 @@ public final class AnnotationClassParser { .label(emptyToNull(configAnnotation.label())) .description(emptyToNull(configAnnotation.description())) .properties(propsArrayToMap(configAnnotation.property())); - + return configMetadata; } - + /** * Build configuration metadata by parsing the given annotation interface class which is used for nested configurations. * @param clazz Configuration annotation class @@ -145,7 +147,7 @@ public final class AnnotationClassParser { buildConfigurationMetadata_PropertyMetadata(clazz), collection); } - + private static Collection<PropertyMetadata<?>> buildConfigurationMetadata_PropertyMetadata(Class<?> clazz) { // sort properties by order number, or alternatively by label, name SortedSet<PropertyMetadata<?>> propertyMetadataSet = new TreeSet<>(new Comparator<PropertyMetadata<?>>() { @@ -167,11 +169,11 @@ public final class AnnotationClassParser { } return propertyMetadataSet; } - - @SuppressWarnings("unchecked") + + @SuppressWarnings({ "unchecked", "unused" }) private static <T> PropertyMetadata<T> buildPropertyMetadata(Method propertyMethod, Class<T> type) { String propertyName = getPropertyName(propertyMethod.getName()); - + PropertyMetadata<?> propertyMetadata; if (type.isArray() && type.getComponentType().isAnnotation()) { ConfigurationMetadata nestedConfigMetadata = buildConfigurationMetadata_Nested(type.getComponentType(), propertyName, true); @@ -184,12 +186,12 @@ public final class AnnotationClassParser { .configurationMetadata(nestedConfigMetadata); } else { - propertyMetadata = new PropertyMetadata<>(propertyName, type) + propertyMetadata = new PropertyMetadata<>(propertyName, type) .defaultValue((T)propertyMethod.getDefaultValue()); } - + Property propertyAnnotation = propertyMethod.getAnnotation(Property.class); - if (propertyAnnotation != null) { + if (propertyAnnotation != null) { propertyMetadata.label(emptyToNull(propertyAnnotation.label())) .description(emptyToNull(propertyAnnotation.description())) .properties(propsArrayToMap(propertyAnnotation.property())) @@ -199,10 +201,10 @@ public final class AnnotationClassParser { Map<String,String> emptyMap = Collections.emptyMap(); propertyMetadata.properties(emptyMap); } - + return (PropertyMetadata)propertyMetadata; } - + private static String emptyToNull(String value) { if (StringUtils.isEmpty(value)) { return null; @@ -211,7 +213,7 @@ public final class AnnotationClassParser { return value; } } - + private static Map<String,String> propsArrayToMap(String[] properties) { Map<String,String> props = new HashMap<>(); for (String property : properties) { @@ -224,5 +226,5 @@ public final class AnnotationClassParser { } return props; } - + } diff --git a/src/main/java/org/apache/sling/caconfig/management/impl/ValueInfoImpl.java b/src/main/java/org/apache/sling/caconfig/management/impl/ValueInfoImpl.java index 4860080..ba4d16a 100644 --- a/src/main/java/org/apache/sling/caconfig/management/impl/ValueInfoImpl.java +++ b/src/main/java/org/apache/sling/caconfig/management/impl/ValueInfoImpl.java @@ -31,7 +31,7 @@ import org.apache.sling.caconfig.spi.metadata.PropertyMetadata; import org.jetbrains.annotations.NotNull; final class ValueInfoImpl<T> implements ValueInfo<T> { - + private final String name; private final T value; private final T effectiveValue; @@ -44,7 +44,8 @@ final class ValueInfoImpl<T> implements ValueInfo<T> { private final String configName; private final ConfigurationOverrideMultiplexer configurationOverrideMultiplexer; private final boolean isAllOverridden; - + + @SuppressWarnings("null") public ValueInfoImpl(String name, T value, T effectiveValue, PropertyMetadata<T> propertyMetadata, Resource resolvedConfigurationResource, Resource writebackConfigurationResource, List<Resource> configurationResourceInheritanceChain, @@ -63,12 +64,12 @@ final class ValueInfoImpl<T> implements ValueInfo<T> { this.configurationOverrideMultiplexer = configurationOverrideMultiplexer; this.isAllOverridden = isAllOverridden; } - + @Override public @NotNull String getName() { return name; } - + @Override public PropertyMetadata<T> getPropertyMetadata() { return propertyMetadata; @@ -132,7 +133,7 @@ final class ValueInfoImpl<T> implements ValueInfo<T> { } } } - + private Resource getResourceFromInheritanceChain() { if (configurationResourceInheritanceChain == null) { return null; @@ -140,6 +141,7 @@ final class ValueInfoImpl<T> implements ValueInfo<T> { return getResourceFromInheritanceChain(configurationResourceInheritanceChain.iterator()); } + @SuppressWarnings("null") private Resource getResourceFromInheritanceChain(Iterator<Resource> inheritanceChain) { if (!inheritanceChain.hasNext()) { return null; diff --git a/src/main/java/org/apache/sling/caconfig/management/impl/console/CAConfigInventoryPrinter.java b/src/main/java/org/apache/sling/caconfig/management/impl/console/CAConfigInventoryPrinter.java index d477b2b..e2ec366 100644 --- a/src/main/java/org/apache/sling/caconfig/management/impl/console/CAConfigInventoryPrinter.java +++ b/src/main/java/org/apache/sling/caconfig/management/impl/console/CAConfigInventoryPrinter.java @@ -58,14 +58,14 @@ public class CAConfigInventoryPrinter implements InventoryPrinter { public static final String NAME = "slingcaconfig"; public static final String TITLE = "Sling Context-Aware Configuration"; - + private BundleContext bundleContext; - + @Activate private void activate(BundleContext bundleContext) { this.bundleContext = bundleContext; } - + @Override public void print(PrintWriter pw, Format format, boolean isZip) { if (format != Format.TEXT) { @@ -83,20 +83,20 @@ public class CAConfigInventoryPrinter implements InventoryPrinter { printSPISection(pw, ConfigurationOverrideProvider.class, "Configuration Override Providers", new ConfigurationOverridePrinter()); } - + @SafeVarargs private final <T> void printSPISection(PrintWriter pw, Class<T> clazz, String title, ServiceConfigurationPrinter<T>... serviceConfigPrinters) { Collection<ServiceReference<T>> serviceReferences = getServiceReferences(clazz); pw.println(title); pw.println(StringUtils.repeat('-', title.length())); - + if (serviceReferences.isEmpty()) { pw.println("(none)"); } else { for (ServiceReference<T> serviceReference : serviceReferences) { - pw.print(ServiceConfigurationPrinter.BULLET); + pw.print(ServiceConfigurationPrinter.BULLET); pw.print(getServiceClassName(serviceReference)); pw.print(" ["); pw.print(getServiceRanking(serviceReference)); @@ -112,7 +112,7 @@ public class CAConfigInventoryPrinter implements InventoryPrinter { } pw.println(); } - + private <T> Collection<ServiceReference<T>> getServiceReferences(Class<T> clazz) { try { SortedMap<Comparable<Object>,ServiceReference<T>> sortedServices = new TreeMap<>(); @@ -121,7 +121,7 @@ public class CAConfigInventoryPrinter implements InventoryPrinter { Map<String,Object> props = new HashMap<>(); for (String property : serviceReference.getPropertyKeys()) { props.put(property, serviceReference.getProperty(property)); - } + } sortedServices.put( ServiceUtil.getComparableForServiceRanking(props, Order.DESCENDING), serviceReference @@ -133,14 +133,15 @@ public class CAConfigInventoryPrinter implements InventoryPrinter { throw new RuntimeException(ex); } } - + + @SuppressWarnings("null") private <T> String getServiceClassName(ServiceReference<T> serviceReference) { Object service = bundleContext.getService(serviceReference); String serviceClassName = service.getClass().getName(); bundleContext.ungetService(serviceReference); return serviceClassName; } - + private <T> int getServiceRanking(ServiceReference<T> serviceReference) { Object serviceRanking = serviceReference.getProperty(Constants.SERVICE_RANKING); if (serviceRanking == null) { @@ -157,10 +158,10 @@ public class CAConfigInventoryPrinter implements InventoryPrinter { } private <T> boolean isEnabled(ServiceReference<T> serviceReference) { - Object enabledObject = (Object)serviceReference.getProperty("enabled"); + Object enabledObject = serviceReference.getProperty("enabled"); if (enabledObject != null) { if (enabledObject instanceof Boolean) { - return ((Boolean)enabledObject).booleanValue(); + return ((Boolean)enabledObject).booleanValue(); } else { return BooleanUtils.toBoolean(enabledObject.toString()); diff --git a/src/test/java/org/apache/sling/caconfig/impl/ConfigurationBindingsValueProviderTest.java b/src/test/java/org/apache/sling/caconfig/impl/ConfigurationBindingsValueProviderTest.java index c4836f5..3f14b1b 100644 --- a/src/test/java/org/apache/sling/caconfig/impl/ConfigurationBindingsValueProviderTest.java +++ b/src/test/java/org/apache/sling/caconfig/impl/ConfigurationBindingsValueProviderTest.java @@ -80,6 +80,7 @@ public class ConfigurationBindingsValueProviderTest { private ConfigurationBindingsValueProvider underTest; @Before + @SuppressWarnings("null") public void setUp() { context.registerInjectActivateService(new ConfigurationMetadataProviderMultiplexerImpl()); context.registerService(ConfigurationMetadataProvider.class, configMetadataProvider); @@ -114,6 +115,7 @@ public class ConfigurationBindingsValueProviderTest { } @Test + @SuppressWarnings("null") public void testNoResource() { when(request.getResource()).thenReturn(null); underTest = context.registerInjectActivateService(new ConfigurationBindingsValueProvider(), "enabled", true); diff --git a/src/test/java/org/apache/sling/caconfig/impl/metadata/BundleEventUtil.java b/src/test/java/org/apache/sling/caconfig/impl/metadata/BundleEventUtil.java index 84edd30..6c15294 100644 --- a/src/test/java/org/apache/sling/caconfig/impl/metadata/BundleEventUtil.java +++ b/src/test/java/org/apache/sling/caconfig/impl/metadata/BundleEventUtil.java @@ -46,15 +46,15 @@ import org.osgi.framework.Version; * Helper methods for simulating events when deploying bundles with configuration annotation classes. */ final class BundleEventUtil { - - private static final AtomicLong BUNDLE_COUNTER = new AtomicLong(); - + + private static final AtomicLong BUNDLE_COUNTER = new AtomicLong(); + private BundleEventUtil() { // static methods only } /** - * Simulate a bundle STARTED event with a given set of classes simulated to be found in the bundle's classpath. + * Simulate a bundle STARTED event with a given set of classes simulated to be found in the bundle's classpath. */ public static Bundle startDummyBundle(BundleContext bundleContext, Class... classes) { DummyBundle bundle = new DummyBundle(bundleContext, classes); @@ -65,7 +65,7 @@ final class BundleEventUtil { } /** - * Simulate a bundle STARTED event with a given set of classes simulated to be found in the bundle's classpath. + * Simulate a bundle STARTED event with a given set of classes simulated to be found in the bundle's classpath. */ public static void stopDummyBundle(Bundle bundle) { ((DummyBundle)bundle).setState(Bundle.RESOLVED); @@ -85,7 +85,7 @@ final class BundleEventUtil { this.bundleContext = bundleContext; this.classes = classes; this.bundleId = BUNDLE_COUNTER.incrementAndGet(); - + StringBuilder sb = new StringBuilder(); for (Class clazz : classes) { sb.append(clazz.getName()).append(","); @@ -97,7 +97,7 @@ final class BundleEventUtil { public int getState() { return this.state; } - + public void setState(int state) { this.state = state; } @@ -247,6 +247,7 @@ final class BundleEventUtil { } @Override + @SuppressWarnings("null") public <A> A adapt(Class<A> type) { return null; } diff --git a/src/test/java/org/apache/sling/caconfig/management/impl/ConfigurationManagerImplCustomPersistence2Test.java b/src/test/java/org/apache/sling/caconfig/management/impl/ConfigurationManagerImplCustomPersistence2Test.java index 739dba8..0f4f4ff 100644 --- a/src/test/java/org/apache/sling/caconfig/management/impl/ConfigurationManagerImplCustomPersistence2Test.java +++ b/src/test/java/org/apache/sling/caconfig/management/impl/ConfigurationManagerImplCustomPersistence2Test.java @@ -38,6 +38,7 @@ import org.osgi.service.cm.ConfigurationAdmin; public class ConfigurationManagerImplCustomPersistence2Test extends ConfigurationManagerImplTest { @Override + @SuppressWarnings("null") protected void provideCustomOsgiConfig() throws Exception { // provide custom lookup resource name for collection properties ConfigurationAdmin configAdmin = context.getService(ConfigurationAdmin.class); diff --git a/src/test/java/org/apache/sling/caconfig/management/impl/ConfigurationPersistenceStrategyMultiplexerImplTest.java b/src/test/java/org/apache/sling/caconfig/management/impl/ConfigurationPersistenceStrategyMultiplexerImplTest.java index dddec63..2319db1 100644 --- a/src/test/java/org/apache/sling/caconfig/management/impl/ConfigurationPersistenceStrategyMultiplexerImplTest.java +++ b/src/test/java/org/apache/sling/caconfig/management/impl/ConfigurationPersistenceStrategyMultiplexerImplTest.java @@ -30,7 +30,6 @@ import org.apache.sling.caconfig.impl.def.DefaultConfigurationPersistenceStrateg import org.apache.sling.caconfig.management.multiplexer.ConfigurationPersistenceStrategyMultiplexer; import org.apache.sling.caconfig.spi.ConfigurationCollectionPersistData; import org.apache.sling.caconfig.spi.ConfigurationPersistData; -import org.apache.sling.caconfig.spi.ConfigurationPersistenceStrategy; import org.apache.sling.caconfig.spi.ConfigurationPersistenceStrategy2; import org.apache.sling.testing.mock.osgi.MapUtil; import org.apache.sling.testing.mock.osgi.MockOsgi; @@ -97,7 +96,7 @@ public class ConfigurationPersistenceStrategyMultiplexerImplTest { public void testMultipleStrategies() { // strategy 1 (using old ConfigurationPersistenceStrategy with bridge to ConfigurationPersistenceStrategy2) - ConfigurationPersistenceStrategy oldStrategy = context.registerService(org.apache.sling.caconfig.spi.ConfigurationPersistenceStrategy.class, + org.apache.sling.caconfig.spi.ConfigurationPersistenceStrategy oldStrategy = context.registerService(org.apache.sling.caconfig.spi.ConfigurationPersistenceStrategy.class, new org.apache.sling.caconfig.spi.ConfigurationPersistenceStrategy() { @Override public Resource getResource(@NotNull Resource resource) {
