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;