Merge pull request #2 from ompandeyy/SLING-8272_caconfig-nod-existence-check
[SLING-8272] Check if Caconfig Node Exists in JCR
diff --git a/src/main/java/org/apache/sling/caconfig/ConfigurationBuilder.java b/src/main/java/org/apache/sling/caconfig/ConfigurationBuilder.java
index 1027141..063fe9c 100644
--- a/src/main/java/org/apache/sling/caconfig/ConfigurationBuilder.java
+++ b/src/main/java/org/apache/sling/caconfig/ConfigurationBuilder.java
@@ -32,7 +32,7 @@
/**
* Define configuration name.
- * Optional for the {@link #as(Class)} and {@link #asCollection(Class)} methods, mandatory for the others.
+ * Optional for the {@link #as(Class)}, {@link #asCollection(Class)} and {@link #has(Class)} methods, mandatory for the others.
* @param configName Relative path
* @return Configuration builder
*/
@@ -86,4 +86,26 @@
*/
@NotNull <T> Collection<T> asAdaptableCollection(@NotNull Class<T> clazz);
+ /**
+ * This method checks for the configuration existence based on {@code configName} defined in the configuration definition. It extracts the {@code configName}
+ * from the given annotation class and checks if the configuration is available for the context path in the current resource hierarchy. If not found, also
+ * checks in the global fall-back paths configured via {@link org.apache.sling.caconfig.resource.impl.def.DefaultConfigurationResourceResolvingStrategy}
+ * which by default are {@code /conf/global}, {@code /apps/config} and {@code /libs/config}.This method does not consider the default values provided in
+ * the configuration definition.
+ * @param clazz Class that can be adapted from a {@link org.apache.sling.api.resource.Resource}
+ * @param <T> Annotation class type
+ * @return True/False based on configuration resource node existence.
+ */
+ <T> boolean has(@NotNull Class<T> clazz);
+
+ /**
+ * This method checks for the configuration existence based on provided {@code configName} value.
+ * It checks if the configuration is available for the context path in the current resource hierarchy and if not found, also
+ * checks in the global fall-back paths configured via {@link org.apache.sling.caconfig.resource.impl.def.DefaultConfigurationResourceResolvingStrategy}
+ * which by default are {@code /conf/global}, {@code /apps/config} and {@code /libs/config}.This method does not consider the default values provided in
+ * the configuration definition.
+ * @param configName Name of the configuration
+ * @return True/False based on configuration resource node existence.
+ */
+ boolean has(String configName);
}
diff --git a/src/main/java/org/apache/sling/caconfig/package-info.java b/src/main/java/org/apache/sling/caconfig/package-info.java
index 92feabe..e78110d 100644
--- a/src/main/java/org/apache/sling/caconfig/package-info.java
+++ b/src/main/java/org/apache/sling/caconfig/package-info.java
@@ -19,5 +19,5 @@
/**
* API for accessing context-aware configuration.
*/
-@org.osgi.annotation.versioning.Version("1.0.1")
+@org.osgi.annotation.versioning.Version("1.1.0")
package org.apache.sling.caconfig;