You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ro...@apache.org on 2017/11/07 09:19:31 UTC
[sling-org-apache-sling-caconfig-spi] annotated tag
org.apache.sling.caconfig.spi-1.2.0 created (now 373971d)
This is an automated email from the ASF dual-hosted git repository.
rombert pushed a change to annotated tag org.apache.sling.caconfig.spi-1.2.0
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-caconfig-spi.git.
at 373971d (tag)
tagging 54a51d9873cba1c38e5efa5af1879b02ad1f55ff (commit)
by Stefan Seifert
on Tue Dec 13 11:37:25 2016 +0000
- Log -----------------------------------------------------------------
org.apache.sling.caconfig.spi-1.2.0
-----------------------------------------------------------------------
This annotated tag includes the following new commits:
new 0fdcbf5 SLING-6057 Context-Aware Config: Separate Maven Project for SPI
new dfa586f Set svn:ignore
new c91f045 SLING-6059 simplify resource inheritance to support only inheritance from direct hierachy parent ("option e)")
new 58e831a SLING-6152 Context-Aware Config: Config reference should be detected in ContextPathStrategy
new 0aa1678 SLING-6157 Context-Aware Config: Change java package name to o.a.s.caconfig
new db3ee06 update to release versions
new a51fcea update to release versions
new e8b5305 fix javadoc errors
new d7c094c [maven-release-plugin] prepare release org.apache.sling.caconfig.spi-1.0.0
new 2e7bdcc [maven-release-plugin] prepare for next development iteration
new 47d6d0c switch to next development version until releases are available on maven central
new d6eafd1 switch to released versions
new a962284 update to parent 29
new a314df0 SLING-6244 : Provide an SPI for influencing the collection inheritance
new 60fb822 SLING-6244 change method signature of CollectionInheritanceDecider to make it consistent with ConfigurationResourceResolvingStrategy add @NotNull annotations
new b8dddfa SLING-6244 picked wrong annotation, use @Nonnull instead
new 4eff84b SLING-6244 : Provide an SPI for influencing the collection inheritance
new 0c50407 SLING-6244 use @CheckForNull for return value
new 2619918 [maven-release-plugin] prepare release org.apache.sling.caconfig.spi-1.1.0
new 388ac9a [maven-release-plugin] prepare for next development iteration
new 782cc32 [maven-release-plugin] prepare release org.apache.sling.caconfig.spi-1.1.0
new 32f1d31 [maven-release-plugin] prepare for next development iteration
new 4e90c74 SLING-6293 refactor property inheritance out of DefaultConfigurationResourceResolvingStrategy and create separate SPI and impl for it *this breaks backward compatibility of package org.apache.sling.caconfig.resource.spi -> major version increase*
new f4ce0cb cosmetic: add missing CheckForNull annotation
new b31b6b6 SLING-6060 Context-Aware Config: Configuration property override providers
new 01df4f3 SLING-6303 Context-Aware Config: Persisting configuration resource collections with names
new 0839db1 SLING-6137 provide configuration metadata in ConfigurationManager
new 3a2a00f SLING-6333 Context-Aware Config: Allow to mark Config Annotation Classes as "Collections"
new 4544031 SLING-6338 support nested configuration classes when detecting configuration metadata
new 8f30ae1 SLING-6338 refactor and fix handling of nested configurations in Management API and ConfigurationResourceResolver
new b6cb663 SLING-6347 Context-Aware Config: Access to Inheritance Properties in Management API, SPI
new b068471 SLING-6338 enhance nested configuration handling refactor SPI metadata classes to make them fluent
new 12e5b6c SLING-6338 make primitive wrapper type conversion consistent
new 722a0a4 SLING-6367 Context-Aware Config: Delete Configurations via ConfigurationManager
new 3fe42c1 update to latest mock versions
new 393d233 SLING-6373 Context-Aware Config: Allow alternative configuration bucket names
new 5a4556d SLING-6338 keep property order
new 73f2c4c SLING-6374 Context-Aware Config: Allow to control property order in annotation classes
new c20d62a SLING-6367 validate configuration collection item names
new 8cf38b6 update to osgi-mock,sling-mock release versions
new fd06a87 update to release version
new c53d2c8 fix javadoc errors
new 46d90ed [maven-release-plugin] prepare release org.apache.sling.caconfig.spi-1.2.0
new 54a51d9 [maven-release-plugin] copy for tag org.apache.sling.caconfig.spi-1.2.0
The 44 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
--
To stop receiving notification emails like this one, please contact
['"commits@sling.apache.org" <co...@sling.apache.org>'].
[sling-org-apache-sling-caconfig-spi] 07/23: SLING-6333
Context-Aware Config: Allow to mark Config Annotation Classes as
"Collections"
Posted by ro...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
rombert pushed a commit to annotated tag org.apache.sling.caconfig.spi-1.2.0
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-caconfig-spi.git
commit 3a2a00f805d8de6fd8f31dc6e3fc37217e63d53e
Author: Stefan Seifert <ss...@apache.org>
AuthorDate: Fri Nov 25 20:16:25 2016 +0000
SLING-6333 Context-Aware Config: Allow to mark Config Annotation Classes as "Collections"
git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/contrib/extensions/contextaware-config/spi@1771375 13f79535-47bb-0310-9956-ffa450edef68
---
pom.xml | 2 +-
.../caconfig/spi/metadata/ConfigurationMetadata.java | 16 ++++++++--------
.../apache/sling/caconfig/spi/metadata/package-info.java | 2 +-
.../caconfig/spi/metadata/ConfigurationMetadataTest.java | 6 +++---
4 files changed, 13 insertions(+), 13 deletions(-)
diff --git a/pom.xml b/pom.xml
index 5009463..e444d82 100644
--- a/pom.xml
+++ b/pom.xml
@@ -53,7 +53,7 @@
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.caconfig.api</artifactId>
- <version>1.0.0</version>
+ <version>1.0.1-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency>
diff --git a/src/main/java/org/apache/sling/caconfig/spi/metadata/ConfigurationMetadata.java b/src/main/java/org/apache/sling/caconfig/spi/metadata/ConfigurationMetadata.java
index c5068b1..d9ec56a 100644
--- a/src/main/java/org/apache/sling/caconfig/spi/metadata/ConfigurationMetadata.java
+++ b/src/main/java/org/apache/sling/caconfig/spi/metadata/ConfigurationMetadata.java
@@ -30,7 +30,7 @@ import org.osgi.annotation.versioning.ProviderType;
@ProviderType
public final class ConfigurationMetadata extends AbstractMetadata {
- private boolean isList;
+ private boolean collection;
private Map<String,PropertyMetadata<?>> propertyMetadata;
/**
@@ -44,21 +44,21 @@ public final class ConfigurationMetadata extends AbstractMetadata {
* @return true if configuration is singleton
*/
public boolean isSingleton() {
- return !isList;
+ return !collection;
}
/**
- * @return true if configuration is list
+ * @return true if configuration is collection
*/
- public boolean isList() {
- return isList;
+ public boolean isCollection() {
+ return collection;
}
/**
- * @param isList true if configuration is list
+ * @param isList true if configuration is collection
*/
- public void setList(boolean isList) {
- this.isList = isList;
+ public void setCollection(boolean value) {
+ this.collection = value;
}
/**
diff --git a/src/main/java/org/apache/sling/caconfig/spi/metadata/package-info.java b/src/main/java/org/apache/sling/caconfig/spi/metadata/package-info.java
index e2bee82..a3759e2 100644
--- a/src/main/java/org/apache/sling/caconfig/spi/metadata/package-info.java
+++ b/src/main/java/org/apache/sling/caconfig/spi/metadata/package-info.java
@@ -19,5 +19,5 @@
/**
* Defining configuration and parameter metadata for the SPI.
*/
-@org.osgi.annotation.versioning.Version("1.0.0")
+@org.osgi.annotation.versioning.Version("2.0.0")
package org.apache.sling.caconfig.spi.metadata;
diff --git a/src/test/java/org/apache/sling/caconfig/spi/metadata/ConfigurationMetadataTest.java b/src/test/java/org/apache/sling/caconfig/spi/metadata/ConfigurationMetadataTest.java
index f2f43de..6477b59 100644
--- a/src/test/java/org/apache/sling/caconfig/spi/metadata/ConfigurationMetadataTest.java
+++ b/src/test/java/org/apache/sling/caconfig/spi/metadata/ConfigurationMetadataTest.java
@@ -35,18 +35,18 @@ public class ConfigurationMetadataTest {
ConfigurationMetadata underTest = new ConfigurationMetadata("name1");
assertEquals("name1", underTest.getName());
assertTrue(underTest.isSingleton());
- assertFalse(underTest.isList());
+ assertFalse(underTest.isCollection());
underTest.setLabel("label1");
underTest.setDescription("desc1");
- underTest.setList(true);
+ underTest.setCollection(true);
Map<String,String> props = ImmutableMap.of("p1", "v1");
underTest.setProperties(props);
assertEquals("label1", underTest.getLabel());
assertEquals("desc1", underTest.getDescription());
assertFalse(underTest.isSingleton());
- assertTrue(underTest.isList());
+ assertTrue(underTest.isCollection());
assertEquals(props, underTest.getProperties());
}
--
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.
[sling-org-apache-sling-caconfig-spi] 13/23: SLING-6367
Context-Aware Config: Delete Configurations via ConfigurationManager
Posted by ro...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
rombert pushed a commit to annotated tag org.apache.sling.caconfig.spi-1.2.0
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-caconfig-spi.git
commit 722a0a41ce67242921d150a7c0f2806171459746
Author: Stefan Seifert <ss...@apache.org>
AuthorDate: Mon Dec 5 20:51:47 2016 +0000
SLING-6367 Context-Aware Config: Delete Configurations via ConfigurationManager
git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/contrib/extensions/contextaware-config/spi@1772800 13f79535-47bb-0310-9956-ffa450edef68
---
.../caconfig/spi/ConfigurationPersistenceStrategy.java | 17 +++++++++++++----
1 file changed, 13 insertions(+), 4 deletions(-)
diff --git a/src/main/java/org/apache/sling/caconfig/spi/ConfigurationPersistenceStrategy.java b/src/main/java/org/apache/sling/caconfig/spi/ConfigurationPersistenceStrategy.java
index 909b7e2..cf88798 100644
--- a/src/main/java/org/apache/sling/caconfig/spi/ConfigurationPersistenceStrategy.java
+++ b/src/main/java/org/apache/sling/caconfig/spi/ConfigurationPersistenceStrategy.java
@@ -55,9 +55,9 @@ public interface ConfigurationPersistenceStrategy {
* @param configResourcePath Path to store configuration data to. The resource (and it's parents) may not exist and may have to be created.
* @param properties Configuration properties
* @return true if the data was persisted. false if persisting the data was not accepted by this persistence strategy
- * (but in case of error throw an exception).
+ * (in case of error throw an exception).
*/
- boolean persist(@Nonnull ResourceResolver resourceResolver,
+ boolean persistConfiguration(@Nonnull ResourceResolver resourceResolver,
@Nonnull String configResourcePath, @Nonnull ConfigurationPersistData data);
/**
@@ -69,9 +69,18 @@ public interface ConfigurationPersistenceStrategy {
* @param resourceCollectionItems Resource collection items to be stored.
* All existing collection entries on this context path level are erased and replaced with the new ones.
* @return true if the data was persisted. false if persisting the data was not accepted by this persistence strategy
- * (but in case of error throw an exception).
+ * (in case of error throw an exception).
*/
- boolean persistCollection(@Nonnull ResourceResolver resourceResolver,
+ boolean persistConfigurationCollection(@Nonnull ResourceResolver resourceResolver,
@Nonnull String configResourceCollectionParentPath, @Nonnull ConfigurationCollectionPersistData data);
+
+ /**
+ * Delete configuration or configuration collection data from repository using the inner-most context path as reference.
+ * @param resourceResolver Resource resolver
+ * @param configResourcePath Path to store configuration data to. The resource (and it's parents) may not exist and may have to be created.
+ * @return true if the data was delete. false if deleting the data was not accepted by this persistence strategy
+ * (in case of error throw an exception).
+ */
+ boolean deleteConfiguration(@Nonnull ResourceResolver resourceResolver, @Nonnull String configResourcePath);
}
--
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.
[sling-org-apache-sling-caconfig-spi] 17/23: SLING-6374
Context-Aware Config: Allow to control property order in annotation classes
Posted by ro...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
rombert pushed a commit to annotated tag org.apache.sling.caconfig.spi-1.2.0
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-caconfig-spi.git
commit 73f2c4c295c37d2a1af4e0c6b0624e10b9f9cda4
Author: Stefan Seifert <ss...@apache.org>
AuthorDate: Wed Dec 7 21:36:09 2016 +0000
SLING-6374 Context-Aware Config: Allow to control property order in annotation classes
git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/contrib/extensions/contextaware-config/spi@1773149 13f79535-47bb-0310-9956-ffa450edef68
---
.../sling/caconfig/spi/metadata/PropertyMetadata.java | 19 ++++++++++++++++++-
1 file changed, 18 insertions(+), 1 deletion(-)
diff --git a/src/main/java/org/apache/sling/caconfig/spi/metadata/PropertyMetadata.java b/src/main/java/org/apache/sling/caconfig/spi/metadata/PropertyMetadata.java
index 977e259..b2e56d0 100644
--- a/src/main/java/org/apache/sling/caconfig/spi/metadata/PropertyMetadata.java
+++ b/src/main/java/org/apache/sling/caconfig/spi/metadata/PropertyMetadata.java
@@ -53,6 +53,7 @@ public final class PropertyMetadata<T> extends AbstractMetadata<PropertyMetadata
private final Class<T> type;
private T defaultValue;
private ConfigurationMetadata configurationMetadata;
+ private int order;
/**
* @param name Property name
@@ -151,6 +152,22 @@ public final class PropertyMetadata<T> extends AbstractMetadata<PropertyMetadata
}
/**
+ * @return Number to control property order in configuration editor.
+ */
+ public int getOrder() {
+ return order;
+ }
+
+ /**
+ * @param value Number to control property order in configuration editor.
+ * @return this
+ */
+ public PropertyMetadata<T> order(int value) {
+ this.order = value;
+ return this;
+ }
+
+ /**
* @return Metadata for nested configuration
*/
public ConfigurationMetadata getConfigurationMetadata() {
@@ -174,7 +191,7 @@ public final class PropertyMetadata<T> extends AbstractMetadata<PropertyMetadata
return configurationMetadata != null
&& (this.type.equals(ConfigurationMetadata.class) || this.type.equals(ConfigurationMetadata[].class));
}
-
+
@Override
public String toString() {
return getName() + "[" + this.type.getSimpleName() + "]";
--
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.
[sling-org-apache-sling-caconfig-spi] 12/23: SLING-6338 make
primitive wrapper type conversion consistent
Posted by ro...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
rombert pushed a commit to annotated tag org.apache.sling.caconfig.spi-1.2.0
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-caconfig-spi.git
commit 12e5b6c24ef6890b54f2d4615ba983d9a8bceb75
Author: Stefan Seifert <ss...@apache.org>
AuthorDate: Thu Dec 1 22:39:47 2016 +0000
SLING-6338 make primitive wrapper type conversion consistent
git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/contrib/extensions/contextaware-config/spi@1772282 13f79535-47bb-0310-9956-ffa450edef68
---
.../caconfig/spi/metadata/PropertyMetadata.java | 32 +++++++++++++++++++---
.../spi/metadata/PropertyMetadataTest.java | 12 ++++++++
2 files changed, 40 insertions(+), 4 deletions(-)
diff --git a/src/main/java/org/apache/sling/caconfig/spi/metadata/PropertyMetadata.java b/src/main/java/org/apache/sling/caconfig/spi/metadata/PropertyMetadata.java
index e936077..977e259 100644
--- a/src/main/java/org/apache/sling/caconfig/spi/metadata/PropertyMetadata.java
+++ b/src/main/java/org/apache/sling/caconfig/spi/metadata/PropertyMetadata.java
@@ -79,10 +79,34 @@ public final class PropertyMetadata<T> extends AbstractMetadata<PropertyMetadata
}
private static Class<?> typeToPrimitive(Class<?> clazz) {
- if (clazz != String.class && !clazz.isPrimitive()) {
- Class<?> type = ClassUtils.wrapperToPrimitive(clazz);
- if (type != null) {
- return type;
+ if (clazz.isArray()) {
+ if (ClassUtils.isPrimitiveWrapper(clazz.getComponentType())) {
+ if (clazz == Integer[].class) {
+ return int[].class;
+ }
+ if (clazz == Long[].class) {
+ return long[].class;
+ }
+ if (clazz == Double[].class) {
+ return double[].class;
+ }
+ if (clazz == Boolean[].class) {
+ return boolean[].class;
+ }
+ }
+ }
+ else if (ClassUtils.isPrimitiveWrapper(clazz)) {
+ if (clazz == Integer.class) {
+ return int.class;
+ }
+ if (clazz == Long.class) {
+ return long.class;
+ }
+ if (clazz == Double.class) {
+ return double.class;
+ }
+ if (clazz == Boolean.class) {
+ return boolean.class;
}
}
return clazz;
diff --git a/src/test/java/org/apache/sling/caconfig/spi/metadata/PropertyMetadataTest.java b/src/test/java/org/apache/sling/caconfig/spi/metadata/PropertyMetadataTest.java
index a51b948..e93fb8b 100644
--- a/src/test/java/org/apache/sling/caconfig/spi/metadata/PropertyMetadataTest.java
+++ b/src/test/java/org/apache/sling/caconfig/spi/metadata/PropertyMetadataTest.java
@@ -66,6 +66,18 @@ public class PropertyMetadataTest {
}
@Test
+ public void testAllowedTypesConverted() {
+ assertEquals(int.class, new PropertyMetadata<>("name1", Integer.class).getType());
+ assertEquals(int[].class, new PropertyMetadata<>("name1", Integer[].class).getType());
+ assertEquals(long.class, new PropertyMetadata<>("name1", Long.class).getType());
+ assertEquals(long[].class, new PropertyMetadata<>("name1", Long[].class).getType());
+ assertEquals(double.class, new PropertyMetadata<>("name1", Double.class).getType());
+ assertEquals(double[].class, new PropertyMetadata<>("name1", Double[].class).getType());
+ assertEquals(boolean.class, new PropertyMetadata<>("name1", Boolean.class).getType());
+ assertEquals(boolean[].class, new PropertyMetadata<>("name1", Boolean[].class).getType());
+ }
+
+ @Test
public void testNestedConfiguration() {
new PropertyMetadata<>("name1", ConfigurationMetadata.class);
new PropertyMetadata<>("name1", ConfigurationMetadata[].class);
--
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.
[sling-org-apache-sling-caconfig-spi] 22/23: [maven-release-plugin]
prepare release org.apache.sling.caconfig.spi-1.2.0
Posted by ro...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
rombert pushed a commit to annotated tag org.apache.sling.caconfig.spi-1.2.0
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-caconfig-spi.git
commit 46d90ed7b68654fd631a0239c953d919ba72f79d
Author: Stefan Seifert <ss...@apache.org>
AuthorDate: Tue Dec 13 11:37:12 2016 +0000
[maven-release-plugin] prepare release org.apache.sling.caconfig.spi-1.2.0
git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/contrib/extensions/contextaware-config/spi@1773952 13f79535-47bb-0310-9956-ffa450edef68
---
pom.xml | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/pom.xml b/pom.xml
index 223a815..5c28182 100644
--- a/pom.xml
+++ b/pom.xml
@@ -29,14 +29,14 @@
<artifactId>org.apache.sling.caconfig.spi</artifactId>
<packaging>bundle</packaging>
- <version>1.1.1-SNAPSHOT</version>
+ <version>1.2.0</version>
<name>Apache Sling Context-Aware Configuration SPI</name>
<description>Apache Sling Context-Aware Configuration SPI</description>
<scm>
- <connection>scm:svn:http://svn.apache.org/repos/asf/sling/trunk/contrib/extensions/contextaware-config/spi</connection>
- <developerConnection>scm:svn:https://svn.apache.org/repos/asf/sling/trunk/contrib/extensions/contextaware-config/spi</developerConnection>
- <url>http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/contextaware-config/spi</url>
+ <connection>scm:svn:http://svn.apache.org/repos/asf/sling/tags/org.apache.sling.caconfig.spi-1.2.0</connection>
+ <developerConnection>scm:svn:https://svn.apache.org/repos/asf/sling/tags/org.apache.sling.caconfig.spi-1.2.0</developerConnection>
+ <url>http://svn.apache.org/viewvc/sling/tags/org.apache.sling.caconfig.spi-1.2.0</url>
</scm>
<build>
--
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.
[sling-org-apache-sling-caconfig-spi] 05/23: SLING-6303
Context-Aware Config: Persisting configuration resource collections with
names
Posted by ro...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
rombert pushed a commit to annotated tag org.apache.sling.caconfig.spi-1.2.0
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-caconfig-spi.git
commit 01df4f37d2b6bf39e99d4826af23cb9f3ad504cb
Author: Stefan Seifert <ss...@apache.org>
AuthorDate: Sat Nov 19 11:37:44 2016 +0000
SLING-6303 Context-Aware Config: Persisting configuration resource collections with names
(!) this breaks backward compatibility of both org.apache.sling.caconfig.spi and org.apache.sling.caconfig.management
git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/contrib/extensions/contextaware-config/spi@1770484 13f79535-47bb-0310-9956-ffa450edef68
---
.../spi/ConfigurationPersistenceStrategy.java | 14 +++++---
...ckage-info.java => ResourceCollectionItem.java} | 40 ++++++++++++++++++++--
.../apache/sling/caconfig/spi/package-info.java | 2 +-
3 files changed, 47 insertions(+), 9 deletions(-)
diff --git a/src/main/java/org/apache/sling/caconfig/spi/ConfigurationPersistenceStrategy.java b/src/main/java/org/apache/sling/caconfig/spi/ConfigurationPersistenceStrategy.java
index 6dfca6f..b9522c9 100644
--- a/src/main/java/org/apache/sling/caconfig/spi/ConfigurationPersistenceStrategy.java
+++ b/src/main/java/org/apache/sling/caconfig/spi/ConfigurationPersistenceStrategy.java
@@ -49,7 +49,8 @@ public interface ConfigurationPersistenceStrategy {
* @param resourceResolver Resource resolver
* @param configResourcePath Path to store configuration data to. The resource (and it's parents) may not exist and may have to be created.
* @param properties Configuration properties
- * @return true if the data was persisted. false if persisting the data was not accepted by this persistence strategy (but in case of error throw an exception).
+ * @return true if the data was persisted. false if persisting the data was not accepted by this persistence strategy
+ * (but in case of error throw an exception).
*/
boolean persist(@Nonnull ResourceResolver resourceResolver,
@Nonnull String configResourcePath, @Nonnull Map<String,Object> properties);
@@ -58,11 +59,14 @@ public interface ConfigurationPersistenceStrategy {
* Stores configuration data for a configuration resource collection.
* The changes are written using the given resource resolver. They are not committed, this is left to the caller.
* @param resourceResolver Resource resolver
- * @param configResourceCollectionParentPath Parent path to store configuration collection data to. The resource (and it's parents) may not exist and may have to be created.
- * @param propertiesCollection Configuration properties
- * @return true if the data was persisted. false if persisting the data was not accepted by this persistence strategy (but in case of error throw an exception).
+ * @param configResourceCollectionParentPath Parent path to store configuration collection data to.
+ * The resource (and it's parents) may not exist and may have to be created.
+ * @param resourceCollectionItems Resource collection items to be stored.
+ * All existing collection entries on this context path level are erased and replaced with the new ones.
+ * @return true if the data was persisted. false if persisting the data was not accepted by this persistence strategy
+ * (but in case of error throw an exception).
*/
boolean persistCollection(@Nonnull ResourceResolver resourceResolver,
- @Nonnull String configResourceCollectionParentPath, @Nonnull Collection<Map<String,Object>> propertiesCollection);
+ @Nonnull String configResourceCollectionParentPath, @Nonnull Collection<ResourceCollectionItem> resourceCollectionItems);
}
diff --git a/src/main/java/org/apache/sling/caconfig/spi/package-info.java b/src/main/java/org/apache/sling/caconfig/spi/ResourceCollectionItem.java
similarity index 50%
copy from src/main/java/org/apache/sling/caconfig/spi/package-info.java
copy to src/main/java/org/apache/sling/caconfig/spi/ResourceCollectionItem.java
index 69d6ad1..ca6f37e 100644
--- a/src/main/java/org/apache/sling/caconfig/spi/package-info.java
+++ b/src/main/java/org/apache/sling/caconfig/spi/ResourceCollectionItem.java
@@ -16,8 +16,42 @@
* specific language governing permissions and limitations
* under the License.
*/
+package org.apache.sling.caconfig.spi;
+
+import java.util.Map;
+
+import org.osgi.annotation.versioning.ProviderType;
+
/**
- * SPI for applications hooking into the configuration infrastructure for parameterizing and customizing.
+ * Name and values for persisting resource collection items.
*/
-@org.osgi.annotation.versioning.Version("1.1.0")
-package org.apache.sling.caconfig.spi;
+@ProviderType
+public final class ResourceCollectionItem {
+
+ private final String collectionItemName;
+ private final Map<String,Object> values;
+
+ /**
+ * @param collectionItemName Resource collection item name
+ * @param values Values
+ */
+ public ResourceCollectionItem(String collectionItemName, Map<String, Object> values) {
+ this.collectionItemName = collectionItemName;
+ this.values = values;
+ }
+
+ /**
+ * @return Resource collection item name
+ */
+ public String getCollectionItemName() {
+ return collectionItemName;
+ }
+
+ /**
+ * @return Values
+ */
+ public Map<String, Object> getValues() {
+ return values;
+ }
+
+}
diff --git a/src/main/java/org/apache/sling/caconfig/spi/package-info.java b/src/main/java/org/apache/sling/caconfig/spi/package-info.java
index 69d6ad1..8637a08 100644
--- a/src/main/java/org/apache/sling/caconfig/spi/package-info.java
+++ b/src/main/java/org/apache/sling/caconfig/spi/package-info.java
@@ -19,5 +19,5 @@
/**
* SPI for applications hooking into the configuration infrastructure for parameterizing and customizing.
*/
-@org.osgi.annotation.versioning.Version("1.1.0")
+@org.osgi.annotation.versioning.Version("2.0.0")
package org.apache.sling.caconfig.spi;
--
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.
[sling-org-apache-sling-caconfig-spi] 20/23: update to release
version
Posted by ro...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
rombert pushed a commit to annotated tag org.apache.sling.caconfig.spi-1.2.0
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-caconfig-spi.git
commit fd06a87df3a2f26e5dcd613f928cbbce23a1d134
Author: Stefan Seifert <ss...@apache.org>
AuthorDate: Tue Dec 13 11:29:20 2016 +0000
update to release version
git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/contrib/extensions/contextaware-config/spi@1773950 13f79535-47bb-0310-9956-ffa450edef68
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index c9c457d..223a815 100644
--- a/pom.xml
+++ b/pom.xml
@@ -53,7 +53,7 @@
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.caconfig.api</artifactId>
- <version>1.0.1-SNAPSHOT</version>
+ <version>1.1.0</version>
<scope>compile</scope>
</dependency>
<dependency>
--
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.
[sling-org-apache-sling-caconfig-spi] 23/23: [maven-release-plugin]
copy for tag org.apache.sling.caconfig.spi-1.2.0
Posted by ro...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
rombert pushed a commit to annotated tag org.apache.sling.caconfig.spi-1.2.0
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-caconfig-spi.git
commit 54a51d9873cba1c38e5efa5af1879b02ad1f55ff
Author: Stefan Seifert <ss...@apache.org>
AuthorDate: Tue Dec 13 11:37:25 2016 +0000
[maven-release-plugin] copy for tag org.apache.sling.caconfig.spi-1.2.0
git-svn-id: https://svn.apache.org/repos/asf/sling/tags/org.apache.sling.caconfig.spi-1.2.0@1773953 13f79535-47bb-0310-9956-ffa450edef68
--
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.
[sling-org-apache-sling-caconfig-spi] 14/23: update to latest mock
versions
Posted by ro...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
rombert pushed a commit to annotated tag org.apache.sling.caconfig.spi-1.2.0
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-caconfig-spi.git
commit 3fe42c1e094fdc5699c8d1f112ea79cce64da587
Author: Stefan Seifert <ss...@apache.org>
AuthorDate: Wed Dec 7 15:12:54 2016 +0000
update to latest mock versions
git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/contrib/extensions/contextaware-config/spi@1773095 13f79535-47bb-0310-9956-ffa450edef68
---
pom.xml | 11 ++---------
1 file changed, 2 insertions(+), 9 deletions(-)
diff --git a/pom.xml b/pom.xml
index e444d82..ef6ee56 100644
--- a/pom.xml
+++ b/pom.xml
@@ -81,20 +81,13 @@
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.testing.osgi-mock</artifactId>
- <version>2.1.0</version>
+ <version>2.1.1-SNAPSHOT</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.testing.sling-mock</artifactId>
- <version>1.8.0</version>
- <scope>test</scope>
- </dependency>
- <!-- this dependency can be removed when updated to sling-mock 1.8.2 or higher -->
- <dependency>
- <groupId>org.apache.sling</groupId>
- <artifactId>org.apache.sling.resourcebuilder</artifactId>
- <version>1.0.2</version>
+ <version>1.8.1-SNAPSHOT</version>
<scope>test</scope>
</dependency>
<dependency>
--
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.
[sling-org-apache-sling-caconfig-spi] 02/23: SLING-6293 refactor
property inheritance out of DefaultConfigurationResourceResolvingStrategy
and create separate SPI and impl for it *this breaks backward compatibility
of package org.apache.sling.caconfig.resource.spi -> major version
increase*
Posted by ro...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
rombert pushed a commit to annotated tag org.apache.sling.caconfig.spi-1.2.0
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-caconfig-spi.git
commit 4e90c741cb79eb9d68bb29a1a57d2de9e87d9dce
Author: Stefan Seifert <ss...@apache.org>
AuthorDate: Thu Nov 17 17:50:36 2016 +0000
SLING-6293 refactor property inheritance out of DefaultConfigurationResourceResolvingStrategy and create separate SPI and impl for it
*this breaks backward compatibility of package org.apache.sling.caconfig.resource.spi -> major version increase*
git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/contrib/extensions/contextaware-config/spi@1770249 13f79535-47bb-0310-9956-ffa450edef68
---
.../ConfigurationResourceResolvingStrategy.java | 31 +++++++++++++--
.../sling/caconfig/resource/spi/package-info.java | 4 +-
.../spi/ConfigurationInheritanceStrategy.java | 44 ++++++++++++++++++++++
.../apache/sling/caconfig/spi/package-info.java | 2 +-
4 files changed, 75 insertions(+), 6 deletions(-)
diff --git a/src/main/java/org/apache/sling/caconfig/resource/spi/ConfigurationResourceResolvingStrategy.java b/src/main/java/org/apache/sling/caconfig/resource/spi/ConfigurationResourceResolvingStrategy.java
index b639d3c..e161a36 100644
--- a/src/main/java/org/apache/sling/caconfig/resource/spi/ConfigurationResourceResolvingStrategy.java
+++ b/src/main/java/org/apache/sling/caconfig/resource/spi/ConfigurationResourceResolvingStrategy.java
@@ -19,6 +19,7 @@
package org.apache.sling.caconfig.resource.spi;
import java.util.Collection;
+import java.util.Iterator;
import javax.annotation.CheckForNull;
import javax.annotation.Nonnull;
@@ -46,7 +47,7 @@ public interface ConfigurationResourceResolvingStrategy {
* it's configuration data grouped in a child resource of the configuration resource. This is what
* we call a "bucket", and the resource name is specified with this parameter.
* @param configName Configuration name or relative path.
- * @return Configuration resource or {@code null}.
+ * @return Configuration resource or {@code null} if this strategy did not found matching resources.
*/
@CheckForNull Resource getResource(@Nonnull Resource resource, @Nonnull String bucketName, @Nonnull String configName);
@@ -57,9 +58,33 @@ public interface ConfigurationResourceResolvingStrategy {
* it's configuration data grouped in a child resource of the configuration resource. This is what
* we call a "bucket", and the resource name is specified with this parameter.
* @param configName Configuration name or relative path.
- * @return Collection of configuration resources, the collection might be empty.
+ * @return Collection of configuration resources or {@code null} if this strategy did not found matching resources.
*/
- @Nonnull Collection<Resource> getResourceCollection(@Nonnull Resource resource, @Nonnull String bucketName, @Nonnull String configName);
+ @CheckForNull Collection<Resource> getResourceCollection(@Nonnull Resource resource, @Nonnull String bucketName, @Nonnull String configName);
+
+ /**
+ * Get a context-aware singleton configuration resource inheritance chain defined by the given configuration name.
+ * The first item of the inheritance chain it the same resource returned by {@link #getResource(Resource, String, String)}.
+ * @param resource Context resource to fetch configuration for
+ * @param bucketName Configuration "bucket" name. Each high-level configuration resolver should store
+ * it's configuration data grouped in a child resource of the configuration resource. This is what
+ * we call a "bucket", and the resource name is specified with this parameter.
+ * @param configName Configuration name or relative path.
+ * @return Configuration resource inheritance chain or {@code null} if this strategy did not found matching resources.
+ */
+ @CheckForNull Iterator<Resource> getResourceInheritanceChain(@Nonnull Resource resource, @Nonnull String bucketName, @Nonnull String configName);
+
+ /**
+ * Get a collection of context-aware configuration resource inheritance chains defined by the given configuration name.
+ * The first item of each inheritance chain is the same item returned by {@link #getResourceCollection(Resource, String, String)}.
+ * @param resource Context resource to fetch configuration for
+ * @param bucketName Configuration "bucket" name. Each high-level configuration resolver should store
+ * it's configuration data grouped in a child resource of the configuration resource. This is what
+ * we call a "bucket", and the resource name is specified with this parameter.
+ * @param configName Configuration name or relative path.
+ * @return Collection of configuration resource inheritance chains or {@code null} if this strategy did not found matching resources.
+ */
+ @CheckForNull Collection<Iterator<Resource>> getResourceCollectionInheritanceChain(@Nonnull Resource resource, @Nonnull String bucketName, @Nonnull String configName);
/**
* Get the configuration resource path for storing configuration data for the given context resource and configuration name.
diff --git a/src/main/java/org/apache/sling/caconfig/resource/spi/package-info.java b/src/main/java/org/apache/sling/caconfig/resource/spi/package-info.java
index 64c8fa3..28049c1 100644
--- a/src/main/java/org/apache/sling/caconfig/resource/spi/package-info.java
+++ b/src/main/java/org/apache/sling/caconfig/resource/spi/package-info.java
@@ -1,4 +1,4 @@
-/*
+ /*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
@@ -19,5 +19,5 @@
/**
* SPI for applications hooking into the configuration resource infrastructure for parameterizing and customizing.
*/
-@org.osgi.annotation.versioning.Version("1.1.0")
+@org.osgi.annotation.versioning.Version("2.0.0")
package org.apache.sling.caconfig.resource.spi;
diff --git a/src/main/java/org/apache/sling/caconfig/spi/ConfigurationInheritanceStrategy.java b/src/main/java/org/apache/sling/caconfig/spi/ConfigurationInheritanceStrategy.java
new file mode 100644
index 0000000..3ad58d7
--- /dev/null
+++ b/src/main/java/org/apache/sling/caconfig/spi/ConfigurationInheritanceStrategy.java
@@ -0,0 +1,44 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.sling.caconfig.spi;
+
+import java.util.Iterator;
+
+import javax.annotation.CheckForNull;
+import javax.annotation.Nonnull;
+
+import org.apache.sling.api.resource.Resource;
+import org.osgi.annotation.versioning.ConsumerType;
+
+/**
+ * Defines how (and if) resources in a resource hierarchy should inherit form each other.
+ * Primary use case is property inheritance over the inheritance chain.
+ */
+@ConsumerType
+public interface ConfigurationInheritanceStrategy {
+
+ /**
+ * Pick or merge resources for inheritance.
+ * @param configResources Iterator of configuration resources that form the inheritance hierarchy.
+ * First resource is the "closest" match, the other resources may be used to inherit from.
+ * @return Inherited resource or null if this strategy does not support the given resources
+ */
+ @CheckForNull Resource getResource(@Nonnull Iterator<Resource> configResources);
+
+}
diff --git a/src/main/java/org/apache/sling/caconfig/spi/package-info.java b/src/main/java/org/apache/sling/caconfig/spi/package-info.java
index a127939..69d6ad1 100644
--- a/src/main/java/org/apache/sling/caconfig/spi/package-info.java
+++ b/src/main/java/org/apache/sling/caconfig/spi/package-info.java
@@ -19,5 +19,5 @@
/**
* SPI for applications hooking into the configuration infrastructure for parameterizing and customizing.
*/
-@org.osgi.annotation.versioning.Version("1.0.0")
+@org.osgi.annotation.versioning.Version("1.1.0")
package org.apache.sling.caconfig.spi;
--
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.
[sling-org-apache-sling-caconfig-spi] 16/23: SLING-6338 keep
property order
Posted by ro...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
rombert pushed a commit to annotated tag org.apache.sling.caconfig.spi-1.2.0
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-caconfig-spi.git
commit 5a4556d476e3433f5327b4ad3e2e4ef041f065a9
Author: Stefan Seifert <ss...@apache.org>
AuthorDate: Wed Dec 7 20:51:01 2016 +0000
SLING-6338 keep property order
git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/contrib/extensions/contextaware-config/spi@1773143 13f79535-47bb-0310-9956-ffa450edef68
---
.../org/apache/sling/caconfig/spi/metadata/ConfigurationMetadata.java | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/main/java/org/apache/sling/caconfig/spi/metadata/ConfigurationMetadata.java b/src/main/java/org/apache/sling/caconfig/spi/metadata/ConfigurationMetadata.java
index d036713..8948c8c 100644
--- a/src/main/java/org/apache/sling/caconfig/spi/metadata/ConfigurationMetadata.java
+++ b/src/main/java/org/apache/sling/caconfig/spi/metadata/ConfigurationMetadata.java
@@ -19,7 +19,7 @@
package org.apache.sling.caconfig.spi.metadata;
import java.util.Collection;
-import java.util.HashMap;
+import java.util.LinkedHashMap;
import java.util.Map;
import javax.annotation.Nonnull;
@@ -47,7 +47,7 @@ public final class ConfigurationMetadata extends AbstractMetadata<ConfigurationM
}
private static Map<String,PropertyMetadata<?>> toMap(Collection<PropertyMetadata<?>> propertyMetadata) {
- Map<String,PropertyMetadata<?>> map = new HashMap<>();
+ Map<String,PropertyMetadata<?>> map = new LinkedHashMap<>();
for (PropertyMetadata<?> item : propertyMetadata) {
if (map.containsKey(item.getName())) {
throw new IllegalArgumentException("Duplicate property name: " + item.getName());
--
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.
[sling-org-apache-sling-caconfig-spi] 08/23: SLING-6338 support
nested configuration classes when detecting configuration metadata
Posted by ro...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
rombert pushed a commit to annotated tag org.apache.sling.caconfig.spi-1.2.0
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-caconfig-spi.git
commit 45440318d107716459a816d8da4871a4b27abed3
Author: Stefan Seifert <ss...@apache.org>
AuthorDate: Mon Nov 28 22:42:33 2016 +0000
SLING-6338 support nested configuration classes when detecting configuration metadata
git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/contrib/extensions/contextaware-config/spi@1771825 13f79535-47bb-0310-9956-ffa450edef68
---
.../sling/caconfig/spi/metadata/PropertyMetadata.java | 15 +++++++++++++++
.../sling/caconfig/spi/metadata/PropertyMetadataTest.java | 5 +++++
2 files changed, 20 insertions(+)
diff --git a/src/main/java/org/apache/sling/caconfig/spi/metadata/PropertyMetadata.java b/src/main/java/org/apache/sling/caconfig/spi/metadata/PropertyMetadata.java
index 40f3e17..447c8ec 100644
--- a/src/main/java/org/apache/sling/caconfig/spi/metadata/PropertyMetadata.java
+++ b/src/main/java/org/apache/sling/caconfig/spi/metadata/PropertyMetadata.java
@@ -52,6 +52,7 @@ public final class PropertyMetadata<T> extends AbstractMetadata {
private final Class<T> type;
private T defaultValue;
+ private ConfigurationMetadata configurationMetadata;
/**
* @param name Property name
@@ -122,6 +123,20 @@ public final class PropertyMetadata<T> extends AbstractMetadata {
public void setDefaultValue(T value) {
this.defaultValue = value;
}
+
+ /**
+ * @return Metadata for nested configuration
+ */
+ public ConfigurationMetadata getConfigurationMetadata() {
+ return configurationMetadata;
+ }
+
+ /**
+ * @param configurationMetadata Metadata for nested configuration
+ */
+ public void setConfigurationMetadata(ConfigurationMetadata configurationMetadata) {
+ this.configurationMetadata = configurationMetadata;
+ }
@Override
public String toString() {
diff --git a/src/test/java/org/apache/sling/caconfig/spi/metadata/PropertyMetadataTest.java b/src/test/java/org/apache/sling/caconfig/spi/metadata/PropertyMetadataTest.java
index 63be8f2..42b1563 100644
--- a/src/test/java/org/apache/sling/caconfig/spi/metadata/PropertyMetadataTest.java
+++ b/src/test/java/org/apache/sling/caconfig/spi/metadata/PropertyMetadataTest.java
@@ -19,6 +19,7 @@
package org.apache.sling.caconfig.spi.metadata;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertSame;
import java.util.Map;
@@ -40,10 +41,14 @@ public class PropertyMetadataTest {
Map<String,String> props = ImmutableMap.of("p1", "v1");
underTest.setProperties(props);
+ ConfigurationMetadata configMetadata = new ConfigurationMetadata("test");
+ underTest.setConfigurationMetadata(configMetadata);
+
assertEquals("label1", underTest.getLabel());
assertEquals("desc1", underTest.getDescription());
assertEquals("value1", underTest.getDefaultValue());
assertEquals(props, underTest.getProperties());
+ assertSame(configMetadata, underTest.getConfigurationMetadata());
}
@Test
--
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.
[sling-org-apache-sling-caconfig-spi] 10/23: SLING-6347
Context-Aware Config: Access to Inheritance Properties in Management API,
SPI
Posted by ro...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
rombert pushed a commit to annotated tag org.apache.sling.caconfig.spi-1.2.0
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-caconfig-spi.git
commit b6cb6639662175dd516d572856592855b83ad289
Author: Stefan Seifert <ss...@apache.org>
AuthorDate: Wed Nov 30 21:00:11 2016 +0000
SLING-6347 Context-Aware Config: Access to Inheritance Properties in Management API, SPI
git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/contrib/extensions/contextaware-config/spi@1772117 13f79535-47bb-0310-9956-ffa450edef68
---
.../spi/ConfigurationCollectionPersistData.java | 68 ++++++++++++++++++++++
...tionItem.java => ConfigurationPersistData.java} | 39 ++++++++-----
.../spi/ConfigurationPersistenceStrategy.java | 7 +--
.../ConfigurationCollectionPersistDataTest.java} | 51 +++++++---------
.../spi/ConfigurationPersistDataTest.java} | 47 ++++++---------
5 files changed, 134 insertions(+), 78 deletions(-)
diff --git a/src/main/java/org/apache/sling/caconfig/spi/ConfigurationCollectionPersistData.java b/src/main/java/org/apache/sling/caconfig/spi/ConfigurationCollectionPersistData.java
new file mode 100644
index 0000000..dfbfa82
--- /dev/null
+++ b/src/main/java/org/apache/sling/caconfig/spi/ConfigurationCollectionPersistData.java
@@ -0,0 +1,68 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.sling.caconfig.spi;
+
+import java.util.Collection;
+import java.util.Map;
+
+import javax.annotation.CheckForNull;
+import javax.annotation.Nonnull;
+
+import org.osgi.annotation.versioning.ProviderType;
+
+/**
+ * Data for persisting configuration collections.
+ */
+@ProviderType
+public final class ConfigurationCollectionPersistData {
+
+ private final Collection<ConfigurationPersistData> items;
+ private Map<String,Object> properties;
+
+ /**
+ * @param collection Collection of configuration collection items
+ */
+ public ConfigurationCollectionPersistData(@Nonnull Collection<ConfigurationPersistData> items) {
+ this.items = items;
+ }
+
+ /**
+ * @return Collection of configuration collection items
+ */
+ public @Nonnull Collection<ConfigurationPersistData> getItems() {
+ return items;
+ }
+
+ /**
+ * @return Properties for the configuration collection itself. Does not contain configuration data, but control data e.g. for enabling collection inheritance.
+ */
+ public @CheckForNull Map<String, Object> getProperties() {
+ return properties;
+ }
+
+ /**
+ * @param properties Properties for the configuration collection itself. Does not contain configuration data, but control data e.g. for enabling collection inheritance.
+ * @return this
+ */
+ public ConfigurationCollectionPersistData properties(Map<String, Object> value) {
+ this.properties = value;
+ return this;
+ }
+
+}
diff --git a/src/main/java/org/apache/sling/caconfig/spi/ResourceCollectionItem.java b/src/main/java/org/apache/sling/caconfig/spi/ConfigurationPersistData.java
similarity index 53%
copy from src/main/java/org/apache/sling/caconfig/spi/ResourceCollectionItem.java
copy to src/main/java/org/apache/sling/caconfig/spi/ConfigurationPersistData.java
index ca6f37e..a062a05 100644
--- a/src/main/java/org/apache/sling/caconfig/spi/ResourceCollectionItem.java
+++ b/src/main/java/org/apache/sling/caconfig/spi/ConfigurationPersistData.java
@@ -20,38 +20,49 @@ package org.apache.sling.caconfig.spi;
import java.util.Map;
+import javax.annotation.CheckForNull;
+import javax.annotation.Nonnull;
+
import org.osgi.annotation.versioning.ProviderType;
/**
- * Name and values for persisting resource collection items.
+ * Data for persisting configuration properties.
*/
@ProviderType
-public final class ResourceCollectionItem {
-
- private final String collectionItemName;
- private final Map<String,Object> values;
+public final class ConfigurationPersistData {
+
+ private final Map<String,Object> properties;
+ private String collectionItemName;
/**
* @param collectionItemName Resource collection item name
- * @param values Values
+ * @param properties Property values
+ */
+ public ConfigurationPersistData(@Nonnull Map<String, Object> properties) {
+ this.properties = properties;
+ }
+
+ /**
+ * @return Property values
*/
- public ResourceCollectionItem(String collectionItemName, Map<String, Object> values) {
- this.collectionItemName = collectionItemName;
- this.values = values;
+ public @Nonnull Map<String, Object> getProperties() {
+ return properties;
}
/**
- * @return Resource collection item name
+ * @return Resource collection item name. To be set only for resource collection items.
*/
- public String getCollectionItemName() {
+ public @CheckForNull String getCollectionItemName() {
return collectionItemName;
}
/**
- * @return Values
+ * @param collectionItemName Resource collection item name. To be set only for resource collection items.
+ * @return this
*/
- public Map<String, Object> getValues() {
- return values;
+ public ConfigurationPersistData collectionItemName(String value) {
+ this.collectionItemName = value;
+ return this;
}
}
diff --git a/src/main/java/org/apache/sling/caconfig/spi/ConfigurationPersistenceStrategy.java b/src/main/java/org/apache/sling/caconfig/spi/ConfigurationPersistenceStrategy.java
index c0cfc2e..eddba38 100644
--- a/src/main/java/org/apache/sling/caconfig/spi/ConfigurationPersistenceStrategy.java
+++ b/src/main/java/org/apache/sling/caconfig/spi/ConfigurationPersistenceStrategy.java
@@ -18,9 +18,6 @@
*/
package org.apache.sling.caconfig.spi;
-import java.util.Collection;
-import java.util.Map;
-
import javax.annotation.CheckForNull;
import javax.annotation.Nonnull;
@@ -61,7 +58,7 @@ public interface ConfigurationPersistenceStrategy {
* (but in case of error throw an exception).
*/
boolean persist(@Nonnull ResourceResolver resourceResolver,
- @Nonnull String configResourcePath, @Nonnull Map<String,Object> properties);
+ @Nonnull String configResourcePath, @Nonnull ConfigurationPersistData data);
/**
* Stores configuration data for a configuration resource collection.
@@ -75,6 +72,6 @@ public interface ConfigurationPersistenceStrategy {
* (but in case of error throw an exception).
*/
boolean persistCollection(@Nonnull ResourceResolver resourceResolver,
- @Nonnull String configResourceCollectionParentPath, @Nonnull Collection<ResourceCollectionItem> resourceCollectionItems);
+ @Nonnull String configResourceCollectionParentPath, @Nonnull ConfigurationCollectionPersistData data);
}
diff --git a/src/main/java/org/apache/sling/caconfig/spi/ResourceCollectionItem.java b/src/test/java/org/apache/sling/caconfig/spi/ConfigurationCollectionPersistDataTest.java
similarity index 52%
copy from src/main/java/org/apache/sling/caconfig/spi/ResourceCollectionItem.java
copy to src/test/java/org/apache/sling/caconfig/spi/ConfigurationCollectionPersistDataTest.java
index ca6f37e..730bb7c 100644
--- a/src/main/java/org/apache/sling/caconfig/spi/ResourceCollectionItem.java
+++ b/src/test/java/org/apache/sling/caconfig/spi/ConfigurationCollectionPersistDataTest.java
@@ -18,40 +18,31 @@
*/
package org.apache.sling.caconfig.spi;
-import java.util.Map;
+import static org.junit.Assert.assertSame;
-import org.osgi.annotation.versioning.ProviderType;
+import java.util.Collection;
+import java.util.Map;
-/**
- * Name and values for persisting resource collection items.
- */
-@ProviderType
-public final class ResourceCollectionItem {
-
- private final String collectionItemName;
- private final Map<String,Object> values;
-
- /**
- * @param collectionItemName Resource collection item name
- * @param values Values
- */
- public ResourceCollectionItem(String collectionItemName, Map<String, Object> values) {
- this.collectionItemName = collectionItemName;
- this.values = values;
- }
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.runners.MockitoJUnitRunner;
- /**
- * @return Resource collection item name
- */
- public String getCollectionItemName() {
- return collectionItemName;
- }
+@RunWith(MockitoJUnitRunner.class)
+public class ConfigurationCollectionPersistDataTest {
- /**
- * @return Values
- */
- public Map<String, Object> getValues() {
- return values;
+ @Mock
+ private Collection<ConfigurationPersistData> items;
+ @Mock
+ private Map<String,Object> props;
+
+ @Test
+ public void testProperties() {
+ ConfigurationCollectionPersistData underTest = new ConfigurationCollectionPersistData(items)
+ .properties(props);
+
+ assertSame(items, underTest.getItems());
+ assertSame(props, underTest.getProperties());
}
}
diff --git a/src/main/java/org/apache/sling/caconfig/spi/ResourceCollectionItem.java b/src/test/java/org/apache/sling/caconfig/spi/ConfigurationPersistDataTest.java
similarity index 51%
rename from src/main/java/org/apache/sling/caconfig/spi/ResourceCollectionItem.java
rename to src/test/java/org/apache/sling/caconfig/spi/ConfigurationPersistDataTest.java
index ca6f37e..01ffa2b 100644
--- a/src/main/java/org/apache/sling/caconfig/spi/ResourceCollectionItem.java
+++ b/src/test/java/org/apache/sling/caconfig/spi/ConfigurationPersistDataTest.java
@@ -18,40 +18,29 @@
*/
package org.apache.sling.caconfig.spi;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertSame;
+
import java.util.Map;
-import org.osgi.annotation.versioning.ProviderType;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.runners.MockitoJUnitRunner;
-/**
- * Name and values for persisting resource collection items.
- */
-@ProviderType
-public final class ResourceCollectionItem {
-
- private final String collectionItemName;
- private final Map<String,Object> values;
-
- /**
- * @param collectionItemName Resource collection item name
- * @param values Values
- */
- public ResourceCollectionItem(String collectionItemName, Map<String, Object> values) {
- this.collectionItemName = collectionItemName;
- this.values = values;
- }
+@RunWith(MockitoJUnitRunner.class)
+public class ConfigurationPersistDataTest {
- /**
- * @return Resource collection item name
- */
- public String getCollectionItemName() {
- return collectionItemName;
- }
+ @Mock
+ private Map<String,Object> props;
- /**
- * @return Values
- */
- public Map<String, Object> getValues() {
- return values;
+ @Test
+ public void testGetProperties() {
+ ConfigurationPersistData underTest = new ConfigurationPersistData(props)
+ .collectionItemName("item1");
+
+ assertSame(props, underTest.getProperties());
+ assertEquals("item1", underTest.getCollectionItemName());
}
}
--
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.
[sling-org-apache-sling-caconfig-spi] 06/23: SLING-6137 provide
configuration metadata in ConfigurationManager
Posted by ro...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
rombert pushed a commit to annotated tag org.apache.sling.caconfig.spi-1.2.0
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-caconfig-spi.git
commit 0839db1f0c50dd1132d771c165243b393014e413
Author: Stefan Seifert <ss...@apache.org>
AuthorDate: Thu Nov 24 21:51:50 2016 +0000
SLING-6137 provide configuration metadata in ConfigurationManager
git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/contrib/extensions/contextaware-config/spi@1771235 13f79535-47bb-0310-9956-ffa450edef68
---
.../org/apache/sling/caconfig/spi/ConfigurationMetadataProvider.java | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/main/java/org/apache/sling/caconfig/spi/ConfigurationMetadataProvider.java b/src/main/java/org/apache/sling/caconfig/spi/ConfigurationMetadataProvider.java
index e552310..c3d04c5 100644
--- a/src/main/java/org/apache/sling/caconfig/spi/ConfigurationMetadataProvider.java
+++ b/src/main/java/org/apache/sling/caconfig/spi/ConfigurationMetadataProvider.java
@@ -20,6 +20,7 @@ package org.apache.sling.caconfig.spi;
import java.util.SortedSet;
+import javax.annotation.CheckForNull;
import javax.annotation.Nonnull;
import org.apache.sling.caconfig.spi.metadata.ConfigurationMetadata;
@@ -42,6 +43,6 @@ public interface ConfigurationMetadataProvider {
* @param configName Configuration name
* @return Configuration metadata or null if none exists for the given name.
*/
- ConfigurationMetadata getConfigurationMetadata(String configName);
+ @CheckForNull ConfigurationMetadata getConfigurationMetadata(String configName);
}
--
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.
[sling-org-apache-sling-caconfig-spi] 04/23: SLING-6060
Context-Aware Config: Configuration property override providers
Posted by ro...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
rombert pushed a commit to annotated tag org.apache.sling.caconfig.spi-1.2.0
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-caconfig-spi.git
commit b31b6b6e7f55df593f73c231531e2ca7bc7945a0
Author: Stefan Seifert <ss...@apache.org>
AuthorDate: Fri Nov 18 23:42:02 2016 +0000
SLING-6060 Context-Aware Config: Configuration property override providers
git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/contrib/extensions/contextaware-config/spi@1770448 13f79535-47bb-0310-9956-ffa450edef68
---
pom.xml | 2 +-
.../spi/ConfigurationMetadataProvider.java | 2 +-
...der.java => ConfigurationOverrideProvider.java} | 26 ++++++++++------------
3 files changed, 14 insertions(+), 16 deletions(-)
diff --git a/pom.xml b/pom.xml
index 6bb7870..5009463 100644
--- a/pom.xml
+++ b/pom.xml
@@ -54,7 +54,7 @@
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.caconfig.api</artifactId>
<version>1.0.0</version>
- <scope>provided</scope>
+ <scope>compile</scope>
</dependency>
<dependency>
<groupId>com.google.code.findbugs</groupId>
diff --git a/src/main/java/org/apache/sling/caconfig/spi/ConfigurationMetadataProvider.java b/src/main/java/org/apache/sling/caconfig/spi/ConfigurationMetadataProvider.java
index 28d99b1..e552310 100644
--- a/src/main/java/org/apache/sling/caconfig/spi/ConfigurationMetadataProvider.java
+++ b/src/main/java/org/apache/sling/caconfig/spi/ConfigurationMetadataProvider.java
@@ -26,7 +26,7 @@ import org.apache.sling.caconfig.spi.metadata.ConfigurationMetadata;
import org.osgi.annotation.versioning.ConsumerType;
/**
- * Allows application to provide the necessary metadata for configurations.
+ * Allows applications to provide the necessary metadata for configurations.
*/
@ConsumerType
public interface ConfigurationMetadataProvider {
diff --git a/src/main/java/org/apache/sling/caconfig/spi/ConfigurationMetadataProvider.java b/src/main/java/org/apache/sling/caconfig/spi/ConfigurationOverrideProvider.java
similarity index 61%
copy from src/main/java/org/apache/sling/caconfig/spi/ConfigurationMetadataProvider.java
copy to src/main/java/org/apache/sling/caconfig/spi/ConfigurationOverrideProvider.java
index 28d99b1..290fa24 100644
--- a/src/main/java/org/apache/sling/caconfig/spi/ConfigurationMetadataProvider.java
+++ b/src/main/java/org/apache/sling/caconfig/spi/ConfigurationOverrideProvider.java
@@ -18,30 +18,28 @@
*/
package org.apache.sling.caconfig.spi;
-import java.util.SortedSet;
+import java.util.Collection;
import javax.annotation.Nonnull;
-import org.apache.sling.caconfig.spi.metadata.ConfigurationMetadata;
import org.osgi.annotation.versioning.ConsumerType;
/**
- * Allows application to provide the necessary metadata for configurations.
+ * Provide information to override configuration data.
*/
@ConsumerType
-public interface ConfigurationMetadataProvider {
+public interface ConfigurationOverrideProvider {
/**
- * Get all configuration names.
- * @return Configuration names
+ * Get override strings. Syntax examples:
+ * <ul>
+ * <li><code>{configName}/{propertyName}={propertyJsonValue}</code></li>
+ * <li><code>{configName}={propertyJsonObject}</code></li>
+ * <li><code>[{contextPath}]{configName}/{propertyName}={propertyJsonValue}</code></li>
+ * <li><code>[{contextPath}]{configName}={propertyJsonObject}</code></li>
+ * </ul>
+ * @return Override strings
*/
- @Nonnull SortedSet<String> getConfigurationNames();
-
- /**
- * Get configuration metadata.
- * @param configName Configuration name
- * @return Configuration metadata or null if none exists for the given name.
- */
- ConfigurationMetadata getConfigurationMetadata(String configName);
+ @Nonnull Collection<String> getOverrideStrings();
}
--
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.
[sling-org-apache-sling-caconfig-spi] 21/23: fix javadoc errors
Posted by ro...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
rombert pushed a commit to annotated tag org.apache.sling.caconfig.spi-1.2.0
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-caconfig-spi.git
commit c53d2c838a96608ca746be5645b1a79656ee6e4a
Author: Stefan Seifert <ss...@apache.org>
AuthorDate: Tue Dec 13 11:36:21 2016 +0000
fix javadoc errors
git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/contrib/extensions/contextaware-config/spi@1773951 13f79535-47bb-0310-9956-ffa450edef68
---
.../resource/spi/ConfigurationResourceResolvingStrategy.java | 5 +++--
.../sling/caconfig/spi/ConfigurationCollectionPersistData.java | 4 ++--
.../org/apache/sling/caconfig/spi/ConfigurationPersistData.java | 3 +--
.../sling/caconfig/spi/ConfigurationPersistenceStrategy.java | 7 +++----
.../apache/sling/caconfig/spi/metadata/ConfigurationMetadata.java | 2 ++
5 files changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/main/java/org/apache/sling/caconfig/resource/spi/ConfigurationResourceResolvingStrategy.java b/src/main/java/org/apache/sling/caconfig/resource/spi/ConfigurationResourceResolvingStrategy.java
index 7b96f80..3b96ae2 100644
--- a/src/main/java/org/apache/sling/caconfig/resource/spi/ConfigurationResourceResolvingStrategy.java
+++ b/src/main/java/org/apache/sling/caconfig/resource/spi/ConfigurationResourceResolvingStrategy.java
@@ -45,6 +45,7 @@ public interface ConfigurationResourceResolvingStrategy {
* @param resource Context resource to fetch configuration for
* @param bucketNames Configuration "bucket" names. For each inheritance level all bucket names are tried, and the first
* one that has a result is included.
+ * @param configName Configuration name or relative path.
* @return Configuration resource or {@code null} if this strategy did not found matching resources.
*/
@CheckForNull Resource getResource(@Nonnull Resource resource, @Nonnull Collection<String> bucketNames, @Nonnull String configName);
@@ -61,7 +62,7 @@ public interface ConfigurationResourceResolvingStrategy {
/**
* Get a context-aware singleton configuration resource inheritance chain defined by the given configuration name.
- * The first item of the inheritance chain it the same resource returned by {@link #getResource(Resource, String, String)}.
+ * The first item of the inheritance chain it the same resource returned by {@link #getResource(Resource, Collection, String)}.
* @param resource Context resource to fetch configuration for
* @param bucketNames Configuration "bucket" names. For each inheritance level all bucket names are tried, and the first
* one that has a result is included.
@@ -72,7 +73,7 @@ public interface ConfigurationResourceResolvingStrategy {
/**
* Get a collection of context-aware configuration resource inheritance chains defined by the given configuration name.
- * The first item of each inheritance chain is the same item returned by {@link #getResourceCollection(Resource, String, String)}.
+ * The first item of each inheritance chain is the same item returned by {@link #getResourceCollection(Resource, Collection, String)}.
* @param resource Context resource to fetch configuration for
* @param bucketNames Configuration "bucket" names. For each inheritance level all bucket names are tried, and the first
* one that has a result is included.
diff --git a/src/main/java/org/apache/sling/caconfig/spi/ConfigurationCollectionPersistData.java b/src/main/java/org/apache/sling/caconfig/spi/ConfigurationCollectionPersistData.java
index 800b1ce..00dfa57 100644
--- a/src/main/java/org/apache/sling/caconfig/spi/ConfigurationCollectionPersistData.java
+++ b/src/main/java/org/apache/sling/caconfig/spi/ConfigurationCollectionPersistData.java
@@ -42,7 +42,7 @@ public final class ConfigurationCollectionPersistData {
private Map<String,Object> properties;
/**
- * @param collection Collection of configuration collection items
+ * @param items Collection of configuration collection items
*/
public ConfigurationCollectionPersistData(@Nonnull Collection<ConfigurationPersistData> items) {
validateItems(items);
@@ -81,7 +81,7 @@ public final class ConfigurationCollectionPersistData {
}
/**
- * @param properties Properties for the configuration collection itself. Does not contain configuration data, but control data e.g. for enabling collection inheritance.
+ * @param value Properties for the configuration collection itself. Does not contain configuration data, but control data e.g. for enabling collection inheritance.
* @return this
*/
public ConfigurationCollectionPersistData properties(Map<String, Object> value) {
diff --git a/src/main/java/org/apache/sling/caconfig/spi/ConfigurationPersistData.java b/src/main/java/org/apache/sling/caconfig/spi/ConfigurationPersistData.java
index a062a05..5a1f2fd 100644
--- a/src/main/java/org/apache/sling/caconfig/spi/ConfigurationPersistData.java
+++ b/src/main/java/org/apache/sling/caconfig/spi/ConfigurationPersistData.java
@@ -35,7 +35,6 @@ public final class ConfigurationPersistData {
private String collectionItemName;
/**
- * @param collectionItemName Resource collection item name
* @param properties Property values
*/
public ConfigurationPersistData(@Nonnull Map<String, Object> properties) {
@@ -57,7 +56,7 @@ public final class ConfigurationPersistData {
}
/**
- * @param collectionItemName Resource collection item name. To be set only for resource collection items.
+ * @param value Resource collection item name. To be set only for resource collection items.
* @return this
*/
public ConfigurationPersistData collectionItemName(String value) {
diff --git a/src/main/java/org/apache/sling/caconfig/spi/ConfigurationPersistenceStrategy.java b/src/main/java/org/apache/sling/caconfig/spi/ConfigurationPersistenceStrategy.java
index cf88798..505ff51 100644
--- a/src/main/java/org/apache/sling/caconfig/spi/ConfigurationPersistenceStrategy.java
+++ b/src/main/java/org/apache/sling/caconfig/spi/ConfigurationPersistenceStrategy.java
@@ -43,7 +43,7 @@ public interface ConfigurationPersistenceStrategy {
/**
* Allows the strategy to transform the given configuration resource path according to it's persistent strategies,
* e.g. fetching the data from a child resource instead of the given resource.
- * @param resource Configuration resource path or part of it (e.g. config name)
+ * @param resourcePath Configuration resource path or part of it (e.g. config name)
* @return Transformed configuration resource path. If null is returned this strategy does not support the given configuration resource path.
*/
@CheckForNull String getResourcePath(@Nonnull String resourcePath);
@@ -53,7 +53,7 @@ public interface ConfigurationPersistenceStrategy {
* The changes are written using the given resource resolver. They are not committed, this is left to the caller.
* @param resourceResolver Resource resolver
* @param configResourcePath Path to store configuration data to. The resource (and it's parents) may not exist and may have to be created.
- * @param properties Configuration properties
+ * @param data Configuration persistence data
* @return true if the data was persisted. false if persisting the data was not accepted by this persistence strategy
* (in case of error throw an exception).
*/
@@ -66,8 +66,7 @@ public interface ConfigurationPersistenceStrategy {
* @param resourceResolver Resource resolver
* @param configResourceCollectionParentPath Parent path to store configuration collection data to.
* The resource (and it's parents) may not exist and may have to be created.
- * @param resourceCollectionItems Resource collection items to be stored.
- * All existing collection entries on this context path level are erased and replaced with the new ones.
+ * @param data Configuration collection data. All existing collection entries on this context path level are erased and replaced with the new ones.
* @return true if the data was persisted. false if persisting the data was not accepted by this persistence strategy
* (in case of error throw an exception).
*/
diff --git a/src/main/java/org/apache/sling/caconfig/spi/metadata/ConfigurationMetadata.java b/src/main/java/org/apache/sling/caconfig/spi/metadata/ConfigurationMetadata.java
index 8948c8c..bc4ef43 100644
--- a/src/main/java/org/apache/sling/caconfig/spi/metadata/ConfigurationMetadata.java
+++ b/src/main/java/org/apache/sling/caconfig/spi/metadata/ConfigurationMetadata.java
@@ -37,6 +37,8 @@ public final class ConfigurationMetadata extends AbstractMetadata<ConfigurationM
/**
* @param name Configuration name
+ * @param propertyMetadata Property metadata
+ * @param collection Collection
*/
public ConfigurationMetadata(@Nonnull String name,
Collection<PropertyMetadata<?>> propertyMetadata,
--
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.
[sling-org-apache-sling-caconfig-spi] 19/23: update to osgi-mock,
sling-mock release versions
Posted by ro...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
rombert pushed a commit to annotated tag org.apache.sling.caconfig.spi-1.2.0
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-caconfig-spi.git
commit 8cf38b6efc896c5c323b6abe04ace20b6be47be2
Author: Stefan Seifert <ss...@apache.org>
AuthorDate: Thu Dec 8 21:29:19 2016 +0000
update to osgi-mock,sling-mock release versions
git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/contrib/extensions/contextaware-config/spi@1773299 13f79535-47bb-0310-9956-ffa450edef68
---
pom.xml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/pom.xml b/pom.xml
index ef6ee56..c9c457d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -81,13 +81,13 @@
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.testing.osgi-mock</artifactId>
- <version>2.1.1-SNAPSHOT</version>
+ <version>2.2.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.testing.sling-mock</artifactId>
- <version>1.8.1-SNAPSHOT</version>
+ <version>1.9.0</version>
<scope>test</scope>
</dependency>
<dependency>
--
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.
[sling-org-apache-sling-caconfig-spi] 03/23: cosmetic: add missing
CheckForNull annotation
Posted by ro...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
rombert pushed a commit to annotated tag org.apache.sling.caconfig.spi-1.2.0
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-caconfig-spi.git
commit f4ce0cbc270f2af384ed8522d50c75930a919423
Author: Stefan Seifert <ss...@apache.org>
AuthorDate: Thu Nov 17 18:19:45 2016 +0000
cosmetic: add missing CheckForNull annotation
git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/contrib/extensions/contextaware-config/spi@1770255 13f79535-47bb-0310-9956-ffa450edef68
---
.../apache/sling/caconfig/spi/ConfigurationPersistenceStrategy.java | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/main/java/org/apache/sling/caconfig/spi/ConfigurationPersistenceStrategy.java b/src/main/java/org/apache/sling/caconfig/spi/ConfigurationPersistenceStrategy.java
index 0f3a0e1..6dfca6f 100644
--- a/src/main/java/org/apache/sling/caconfig/spi/ConfigurationPersistenceStrategy.java
+++ b/src/main/java/org/apache/sling/caconfig/spi/ConfigurationPersistenceStrategy.java
@@ -21,6 +21,7 @@ package org.apache.sling.caconfig.spi;
import java.util.Collection;
import java.util.Map;
+import javax.annotation.CheckForNull;
import javax.annotation.Nonnull;
import org.apache.sling.api.resource.Resource;
@@ -40,7 +41,7 @@ public interface ConfigurationPersistenceStrategy {
* @param resource Configuration resource
* @return Transformed configuration resource. If null is returned this strategy does not support the given configuration resource.
*/
- Resource getResource(@Nonnull Resource resource);
+ @CheckForNull Resource getResource(@Nonnull Resource resource);
/**
* Stores configuration data for a singleton configuration resource.
--
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.
[sling-org-apache-sling-caconfig-spi] 11/23: SLING-6338 enhance
nested configuration handling refactor SPI metadata classes to make them
fluent
Posted by ro...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
rombert pushed a commit to annotated tag org.apache.sling.caconfig.spi-1.2.0
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-caconfig-spi.git
commit b068471bb00d69708fa3fec9836a44ed5b5e30e0
Author: Stefan Seifert <ss...@apache.org>
AuthorDate: Thu Dec 1 18:05:41 2016 +0000
SLING-6338 enhance nested configuration handling
refactor SPI metadata classes to make them fluent
git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/contrib/extensions/contextaware-config/spi@1772244 13f79535-47bb-0310-9956-ffa450edef68
---
.../spi/ConfigurationPersistenceStrategy.java | 2 +-
.../caconfig/spi/metadata/AbstractMetadata.java | 17 +++++++---
.../spi/metadata/ConfigurationMetadata.java | 39 ++++++++++++----------
.../caconfig/spi/metadata/PropertyMetadata.java | 19 +++++++++--
.../spi/metadata/ConfigurationMetadataTest.java | 35 +++++++++++++++----
.../spi/metadata/PropertyMetadataTest.java | 14 ++++----
6 files changed, 87 insertions(+), 39 deletions(-)
diff --git a/src/main/java/org/apache/sling/caconfig/spi/ConfigurationPersistenceStrategy.java b/src/main/java/org/apache/sling/caconfig/spi/ConfigurationPersistenceStrategy.java
index eddba38..909b7e2 100644
--- a/src/main/java/org/apache/sling/caconfig/spi/ConfigurationPersistenceStrategy.java
+++ b/src/main/java/org/apache/sling/caconfig/spi/ConfigurationPersistenceStrategy.java
@@ -43,7 +43,7 @@ public interface ConfigurationPersistenceStrategy {
/**
* Allows the strategy to transform the given configuration resource path according to it's persistent strategies,
* e.g. fetching the data from a child resource instead of the given resource.
- * @param resource Configuration resource path
+ * @param resource Configuration resource path or part of it (e.g. config name)
* @return Transformed configuration resource path. If null is returned this strategy does not support the given configuration resource path.
*/
@CheckForNull String getResourcePath(@Nonnull String resourcePath);
diff --git a/src/main/java/org/apache/sling/caconfig/spi/metadata/AbstractMetadata.java b/src/main/java/org/apache/sling/caconfig/spi/metadata/AbstractMetadata.java
index 1db599c..dc69fb6 100644
--- a/src/main/java/org/apache/sling/caconfig/spi/metadata/AbstractMetadata.java
+++ b/src/main/java/org/apache/sling/caconfig/spi/metadata/AbstractMetadata.java
@@ -25,7 +25,7 @@ import javax.annotation.Nonnull;
/**
* Common properties for configuration and properties.
*/
-abstract class AbstractMetadata {
+abstract class AbstractMetadata<T> {
private final String name;
private String label;
@@ -55,9 +55,12 @@ abstract class AbstractMetadata {
/**
* @param label Label
+ * @return this;
*/
- public void setLabel(String label) {
+ @SuppressWarnings("unchecked")
+ public T label(String label) {
this.label = label;
+ return (T)this;
}
/**
@@ -69,9 +72,12 @@ abstract class AbstractMetadata {
/**
* @param description Description
+ * @return this;
*/
- public void setDescription(String description) {
+ @SuppressWarnings("unchecked")
+ public T description(String description) {
this.description = description;
+ return (T)this;
}
/**
@@ -83,9 +89,12 @@ abstract class AbstractMetadata {
/**
* @param properties Further properties for documentation and configuration of behavior in configuration editor.
+ * @return this;
*/
- public void setProperties(Map<String,String> properties) {
+ @SuppressWarnings("unchecked")
+ public T properties(Map<String,String> properties) {
this.properties = properties;
+ return (T)this;
}
@Override
diff --git a/src/main/java/org/apache/sling/caconfig/spi/metadata/ConfigurationMetadata.java b/src/main/java/org/apache/sling/caconfig/spi/metadata/ConfigurationMetadata.java
index d9ec56a..d036713 100644
--- a/src/main/java/org/apache/sling/caconfig/spi/metadata/ConfigurationMetadata.java
+++ b/src/main/java/org/apache/sling/caconfig/spi/metadata/ConfigurationMetadata.java
@@ -18,6 +18,8 @@
*/
package org.apache.sling.caconfig.spi.metadata;
+import java.util.Collection;
+import java.util.HashMap;
import java.util.Map;
import javax.annotation.Nonnull;
@@ -28,16 +30,31 @@ import org.osgi.annotation.versioning.ProviderType;
* Defines a configuration.
*/
@ProviderType
-public final class ConfigurationMetadata extends AbstractMetadata {
+public final class ConfigurationMetadata extends AbstractMetadata<ConfigurationMetadata> {
- private boolean collection;
- private Map<String,PropertyMetadata<?>> propertyMetadata;
+ private final Map<String,PropertyMetadata<?>> propertyMetadata;
+ private final boolean collection;
/**
* @param name Configuration name
*/
- public ConfigurationMetadata(@Nonnull String name) {
+ public ConfigurationMetadata(@Nonnull String name,
+ Collection<PropertyMetadata<?>> propertyMetadata,
+ boolean collection) {
super(name);
+ this.propertyMetadata = toMap(propertyMetadata);
+ this.collection = collection;
+ }
+
+ private static Map<String,PropertyMetadata<?>> toMap(Collection<PropertyMetadata<?>> propertyMetadata) {
+ Map<String,PropertyMetadata<?>> map = new HashMap<>();
+ for (PropertyMetadata<?> item : propertyMetadata) {
+ if (map.containsKey(item.getName())) {
+ throw new IllegalArgumentException("Duplicate property name: " + item.getName());
+ }
+ map.put(item.getName(), item);
+ }
+ return map;
}
/**
@@ -55,24 +72,10 @@ public final class ConfigurationMetadata extends AbstractMetadata {
}
/**
- * @param isList true if configuration is collection
- */
- public void setCollection(boolean value) {
- this.collection = value;
- }
-
- /**
* @return Configuration properties
*/
public Map<String,PropertyMetadata<?>> getPropertyMetadata() {
return this.propertyMetadata;
}
- /**
- * @param propertyMetadata Configuration properties
- */
- public void setPropertyMetadata(Map<String,PropertyMetadata<?>> propertyMetadata) {
- this.propertyMetadata = propertyMetadata;
- }
-
}
diff --git a/src/main/java/org/apache/sling/caconfig/spi/metadata/PropertyMetadata.java b/src/main/java/org/apache/sling/caconfig/spi/metadata/PropertyMetadata.java
index 447c8ec..e936077 100644
--- a/src/main/java/org/apache/sling/caconfig/spi/metadata/PropertyMetadata.java
+++ b/src/main/java/org/apache/sling/caconfig/spi/metadata/PropertyMetadata.java
@@ -33,7 +33,7 @@ import org.osgi.annotation.versioning.ProviderType;
* @param <T> Property value type
*/
@ProviderType
-public final class PropertyMetadata<T> extends AbstractMetadata {
+public final class PropertyMetadata<T> extends AbstractMetadata<PropertyMetadata<T>> {
// these are all types supported for fields of annotation classes (plus class which indicates nested configurations)
private static final Class<?>[] SUPPORTED_TYPES_ARRAY = {
@@ -119,9 +119,11 @@ public final class PropertyMetadata<T> extends AbstractMetadata {
/**
* @param value Default value if parameter is not set for configuration
+ * @return this;
*/
- public void setDefaultValue(T value) {
+ public PropertyMetadata<T> defaultValue(T value) {
this.defaultValue = value;
+ return this;
}
/**
@@ -133,9 +135,20 @@ public final class PropertyMetadata<T> extends AbstractMetadata {
/**
* @param configurationMetadata Metadata for nested configuration
+ * @return this;
*/
- public void setConfigurationMetadata(ConfigurationMetadata configurationMetadata) {
+ public PropertyMetadata<T> configurationMetadata(ConfigurationMetadata configurationMetadata) {
this.configurationMetadata = configurationMetadata;
+ return this;
+ }
+
+ /**
+ * @return true if this property describes a nested configuration.
+ * In this case it is ensured configuration metadata is present, and the type is ConfigurationMetadata or ConfigurationMetadata[].
+ */
+ public boolean isNestedConfiguration() {
+ return configurationMetadata != null
+ && (this.type.equals(ConfigurationMetadata.class) || this.type.equals(ConfigurationMetadata[].class));
}
@Override
diff --git a/src/test/java/org/apache/sling/caconfig/spi/metadata/ConfigurationMetadataTest.java b/src/test/java/org/apache/sling/caconfig/spi/metadata/ConfigurationMetadataTest.java
index 6477b59..83bd8f5 100644
--- a/src/test/java/org/apache/sling/caconfig/spi/metadata/ConfigurationMetadataTest.java
+++ b/src/test/java/org/apache/sling/caconfig/spi/metadata/ConfigurationMetadataTest.java
@@ -26,28 +26,51 @@ import java.util.Map;
import org.junit.Test;
+import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
public class ConfigurationMetadataTest {
@Test
public void testProps() {
- ConfigurationMetadata underTest = new ConfigurationMetadata("name1");
+ ConfigurationMetadata underTest = new ConfigurationMetadata("name1", ImmutableList.<PropertyMetadata<?>>of(), false);
assertEquals("name1", underTest.getName());
assertTrue(underTest.isSingleton());
assertFalse(underTest.isCollection());
- underTest.setLabel("label1");
- underTest.setDescription("desc1");
- underTest.setCollection(true);
Map<String,String> props = ImmutableMap.of("p1", "v1");
- underTest.setProperties(props);
+ underTest.label("label1")
+ .description("desc1")
+ .properties(props);
assertEquals("label1", underTest.getLabel());
assertEquals("desc1", underTest.getDescription());
+ assertEquals(props, underTest.getProperties());
+ }
+
+ @Test
+ public void testCollectionProps() {
+ ConfigurationMetadata underTest = new ConfigurationMetadata("name1", ImmutableList.<PropertyMetadata<?>>of(), true);
+ assertEquals("name1", underTest.getName());
assertFalse(underTest.isSingleton());
assertTrue(underTest.isCollection());
- assertEquals(props, underTest.getProperties());
+ }
+
+ @Test
+ public void testPropertyMap() {
+ ConfigurationMetadata underTest = new ConfigurationMetadata("name1", ImmutableList.<PropertyMetadata<?>>of(
+ new PropertyMetadata<>("prop1", "devValue"),
+ new PropertyMetadata<>("prop2", 5)), false);
+ assertEquals(2, underTest.getPropertyMetadata().size());
+ assertTrue(underTest.getPropertyMetadata().containsKey("prop1"));
+ assertTrue(underTest.getPropertyMetadata().containsKey("prop2"));
+ }
+
+ @Test(expected = IllegalArgumentException.class)
+ public void testDuplicateKey() {
+ new ConfigurationMetadata("name1", ImmutableList.<PropertyMetadata<?>>of(
+ new PropertyMetadata<>("prop1", "devValue"),
+ new PropertyMetadata<>("prop1", 5)), false);
}
}
diff --git a/src/test/java/org/apache/sling/caconfig/spi/metadata/PropertyMetadataTest.java b/src/test/java/org/apache/sling/caconfig/spi/metadata/PropertyMetadataTest.java
index 42b1563..a51b948 100644
--- a/src/test/java/org/apache/sling/caconfig/spi/metadata/PropertyMetadataTest.java
+++ b/src/test/java/org/apache/sling/caconfig/spi/metadata/PropertyMetadataTest.java
@@ -25,6 +25,7 @@ import java.util.Map;
import org.junit.Test;
+import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
public class PropertyMetadataTest {
@@ -35,14 +36,13 @@ public class PropertyMetadataTest {
assertEquals("name1", underTest.getName());
assertEquals(String.class, underTest.getType());
- underTest.setLabel("label1");
- underTest.setDescription("desc1");
- underTest.setDefaultValue("value1");
+ ConfigurationMetadata configMetadata = new ConfigurationMetadata("test", ImmutableList.<PropertyMetadata<?>>of(), false);
Map<String,String> props = ImmutableMap.of("p1", "v1");
- underTest.setProperties(props);
-
- ConfigurationMetadata configMetadata = new ConfigurationMetadata("test");
- underTest.setConfigurationMetadata(configMetadata);
+ underTest.label("label1")
+ .description("desc1")
+ .defaultValue("value1")
+ .properties(props)
+ .configurationMetadata(configMetadata);
assertEquals("label1", underTest.getLabel());
assertEquals("desc1", underTest.getDescription());
--
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.
[sling-org-apache-sling-caconfig-spi] 09/23: SLING-6338 refactor
and fix handling of nested configurations in Management API and
ConfigurationResourceResolver
Posted by ro...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
rombert pushed a commit to annotated tag org.apache.sling.caconfig.spi-1.2.0
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-caconfig-spi.git
commit 8f30ae15942ce2a950da5d0202dc5e52ba201bf1
Author: Stefan Seifert <ss...@apache.org>
AuthorDate: Wed Nov 30 15:34:44 2016 +0000
SLING-6338 refactor and fix handling of nested configurations in Management API and ConfigurationResourceResolver
git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/contrib/extensions/contextaware-config/spi@1772057 13f79535-47bb-0310-9956-ffa450edef68
---
.../sling/caconfig/spi/ConfigurationPersistenceStrategy.java | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/src/main/java/org/apache/sling/caconfig/spi/ConfigurationPersistenceStrategy.java b/src/main/java/org/apache/sling/caconfig/spi/ConfigurationPersistenceStrategy.java
index b9522c9..c0cfc2e 100644
--- a/src/main/java/org/apache/sling/caconfig/spi/ConfigurationPersistenceStrategy.java
+++ b/src/main/java/org/apache/sling/caconfig/spi/ConfigurationPersistenceStrategy.java
@@ -44,6 +44,14 @@ public interface ConfigurationPersistenceStrategy {
@CheckForNull Resource getResource(@Nonnull Resource resource);
/**
+ * Allows the strategy to transform the given configuration resource path according to it's persistent strategies,
+ * e.g. fetching the data from a child resource instead of the given resource.
+ * @param resource Configuration resource path
+ * @return Transformed configuration resource path. If null is returned this strategy does not support the given configuration resource path.
+ */
+ @CheckForNull String getResourcePath(@Nonnull String resourcePath);
+
+ /**
* Stores configuration data for a singleton configuration resource.
* The changes are written using the given resource resolver. They are not committed, this is left to the caller.
* @param resourceResolver Resource resolver
--
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.
[sling-org-apache-sling-caconfig-spi] 15/23: SLING-6373
Context-Aware Config: Allow alternative configuration bucket names
Posted by ro...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
rombert pushed a commit to annotated tag org.apache.sling.caconfig.spi-1.2.0
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-caconfig-spi.git
commit 393d233ef9a99830b048d6696107ffc646eb198a
Author: Stefan Seifert <ss...@apache.org>
AuthorDate: Wed Dec 7 18:03:16 2016 +0000
SLING-6373 Context-Aware Config: Allow alternative configuration bucket names
git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/contrib/extensions/contextaware-config/spi@1773130 13f79535-47bb-0310-9956-ffa450edef68
---
.../ConfigurationResourceResolvingStrategy.java | 29 +++++++++-------------
1 file changed, 12 insertions(+), 17 deletions(-)
diff --git a/src/main/java/org/apache/sling/caconfig/resource/spi/ConfigurationResourceResolvingStrategy.java b/src/main/java/org/apache/sling/caconfig/resource/spi/ConfigurationResourceResolvingStrategy.java
index e161a36..7b96f80 100644
--- a/src/main/java/org/apache/sling/caconfig/resource/spi/ConfigurationResourceResolvingStrategy.java
+++ b/src/main/java/org/apache/sling/caconfig/resource/spi/ConfigurationResourceResolvingStrategy.java
@@ -43,48 +43,43 @@ public interface ConfigurationResourceResolvingStrategy {
/**
* Get a context-aware singleton configuration resource defined by the given configuration name.
* @param resource Context resource to fetch configuration for
- * @param bucketName Configuration "bucket" name. Each high-level configuration resolver should store
- * it's configuration data grouped in a child resource of the configuration resource. This is what
- * we call a "bucket", and the resource name is specified with this parameter.
- * @param configName Configuration name or relative path.
+ * @param bucketNames Configuration "bucket" names. For each inheritance level all bucket names are tried, and the first
+ * one that has a result is included.
* @return Configuration resource or {@code null} if this strategy did not found matching resources.
*/
- @CheckForNull Resource getResource(@Nonnull Resource resource, @Nonnull String bucketName, @Nonnull String configName);
+ @CheckForNull Resource getResource(@Nonnull Resource resource, @Nonnull Collection<String> bucketNames, @Nonnull String configName);
/**
* Get a collection of context-aware configuration resources defined by the given configuration name.
* @param resource Context resource to fetch configuration for
- * @param bucketName Configuration "bucket" name. Each high-level configuration resolver should store
- * it's configuration data grouped in a child resource of the configuration resource. This is what
- * we call a "bucket", and the resource name is specified with this parameter.
+ * @param bucketNames Configuration "bucket" names. For each inheritance level all bucket names are tried, and the first
+ * one that has a result is included.
* @param configName Configuration name or relative path.
* @return Collection of configuration resources or {@code null} if this strategy did not found matching resources.
*/
- @CheckForNull Collection<Resource> getResourceCollection(@Nonnull Resource resource, @Nonnull String bucketName, @Nonnull String configName);
+ @CheckForNull Collection<Resource> getResourceCollection(@Nonnull Resource resource, @Nonnull Collection<String> bucketNames, @Nonnull String configName);
/**
* Get a context-aware singleton configuration resource inheritance chain defined by the given configuration name.
* The first item of the inheritance chain it the same resource returned by {@link #getResource(Resource, String, String)}.
* @param resource Context resource to fetch configuration for
- * @param bucketName Configuration "bucket" name. Each high-level configuration resolver should store
- * it's configuration data grouped in a child resource of the configuration resource. This is what
- * we call a "bucket", and the resource name is specified with this parameter.
+ * @param bucketNames Configuration "bucket" names. For each inheritance level all bucket names are tried, and the first
+ * one that has a result is included.
* @param configName Configuration name or relative path.
* @return Configuration resource inheritance chain or {@code null} if this strategy did not found matching resources.
*/
- @CheckForNull Iterator<Resource> getResourceInheritanceChain(@Nonnull Resource resource, @Nonnull String bucketName, @Nonnull String configName);
+ @CheckForNull Iterator<Resource> getResourceInheritanceChain(@Nonnull Resource resource, @Nonnull Collection<String> bucketNames, @Nonnull String configName);
/**
* Get a collection of context-aware configuration resource inheritance chains defined by the given configuration name.
* The first item of each inheritance chain is the same item returned by {@link #getResourceCollection(Resource, String, String)}.
* @param resource Context resource to fetch configuration for
- * @param bucketName Configuration "bucket" name. Each high-level configuration resolver should store
- * it's configuration data grouped in a child resource of the configuration resource. This is what
- * we call a "bucket", and the resource name is specified with this parameter.
+ * @param bucketNames Configuration "bucket" names. For each inheritance level all bucket names are tried, and the first
+ * one that has a result is included.
* @param configName Configuration name or relative path.
* @return Collection of configuration resource inheritance chains or {@code null} if this strategy did not found matching resources.
*/
- @CheckForNull Collection<Iterator<Resource>> getResourceCollectionInheritanceChain(@Nonnull Resource resource, @Nonnull String bucketName, @Nonnull String configName);
+ @CheckForNull Collection<Iterator<Resource>> getResourceCollectionInheritanceChain(@Nonnull Resource resource, @Nonnull Collection<String> bucketNames, @Nonnull String configName);
/**
* Get the configuration resource path for storing configuration data for the given context resource and configuration name.
--
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.
[sling-org-apache-sling-caconfig-spi] 01/23: [maven-release-plugin]
prepare for next development iteration
Posted by ro...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
rombert pushed a commit to annotated tag org.apache.sling.caconfig.spi-1.2.0
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-caconfig-spi.git
commit 32f1d3112a776b191d6972eb7b30583857dd2a3e
Author: Carsten Ziegeler <cz...@apache.org>
AuthorDate: Mon Nov 7 10:38:04 2016 +0000
[maven-release-plugin] prepare for next development iteration
git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/contrib/extensions/contextaware-config/spi@1768490 13f79535-47bb-0310-9956-ffa450edef68
---
pom.xml | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/pom.xml b/pom.xml
index fe35be9..6bb7870 100644
--- a/pom.xml
+++ b/pom.xml
@@ -29,14 +29,14 @@
<artifactId>org.apache.sling.caconfig.spi</artifactId>
<packaging>bundle</packaging>
- <version>1.1.0</version>
+ <version>1.1.1-SNAPSHOT</version>
<name>Apache Sling Context-Aware Configuration SPI</name>
<description>Apache Sling Context-Aware Configuration SPI</description>
<scm>
- <connection>scm:svn:http://svn.apache.org/repos/asf/sling/tags/org.apache.sling.caconfig.spi-1.1.0</connection>
- <developerConnection>scm:svn:https://svn.apache.org/repos/asf/sling/tags/org.apache.sling.caconfig.spi-1.1.0</developerConnection>
- <url>http://svn.apache.org/viewvc/sling/tags/org.apache.sling.caconfig.spi-1.1.0</url>
+ <connection>scm:svn:http://svn.apache.org/repos/asf/sling/trunk/contrib/extensions/contextaware-config/spi</connection>
+ <developerConnection>scm:svn:https://svn.apache.org/repos/asf/sling/trunk/contrib/extensions/contextaware-config/spi</developerConnection>
+ <url>http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/contextaware-config/spi</url>
</scm>
<build>
--
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.
[sling-org-apache-sling-caconfig-spi] 18/23: SLING-6367 validate
configuration collection item names
Posted by ro...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
rombert pushed a commit to annotated tag org.apache.sling.caconfig.spi-1.2.0
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-caconfig-spi.git
commit c20d62a203e056ebe5bdbe23fc77a79b5678628d
Author: Stefan Seifert <ss...@apache.org>
AuthorDate: Thu Dec 8 20:48:34 2016 +0000
SLING-6367 validate configuration collection item names
git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/contrib/extensions/contextaware-config/spi@1773298 13f79535-47bb-0310-9956-ffa450edef68
---
.../spi/ConfigurationCollectionPersistData.java | 24 +++++++++++++
.../ConfigurationCollectionPersistDataTest.java | 40 ++++++++++++++++++++--
2 files changed, 62 insertions(+), 2 deletions(-)
diff --git a/src/main/java/org/apache/sling/caconfig/spi/ConfigurationCollectionPersistData.java b/src/main/java/org/apache/sling/caconfig/spi/ConfigurationCollectionPersistData.java
index dfbfa82..800b1ce 100644
--- a/src/main/java/org/apache/sling/caconfig/spi/ConfigurationCollectionPersistData.java
+++ b/src/main/java/org/apache/sling/caconfig/spi/ConfigurationCollectionPersistData.java
@@ -19,11 +19,15 @@
package org.apache.sling.caconfig.spi;
import java.util.Collection;
+import java.util.HashSet;
import java.util.Map;
+import java.util.Set;
+import java.util.regex.Pattern;
import javax.annotation.CheckForNull;
import javax.annotation.Nonnull;
+import org.apache.commons.lang3.StringUtils;
import org.osgi.annotation.versioning.ProviderType;
/**
@@ -31,6 +35,8 @@ import org.osgi.annotation.versioning.ProviderType;
*/
@ProviderType
public final class ConfigurationCollectionPersistData {
+
+ private static final Pattern ITEM_NAME_PATTERN = Pattern.compile("^[a-zA-Z0-9_-]+$");
private final Collection<ConfigurationPersistData> items;
private Map<String,Object> properties;
@@ -39,8 +45,26 @@ public final class ConfigurationCollectionPersistData {
* @param collection Collection of configuration collection items
*/
public ConfigurationCollectionPersistData(@Nonnull Collection<ConfigurationPersistData> items) {
+ validateItems(items);
this.items = items;
}
+
+ private void validateItems(Collection<ConfigurationPersistData> items) {
+ // ensure unique and valid key names
+ Set<String> keyNames = new HashSet<>();
+ for (ConfigurationPersistData item : items) {
+ if (StringUtils.isBlank(item.getCollectionItemName())) {
+ throw new ConfigurationPersistenceException("Collection item name is missing.");
+ }
+ if (!ITEM_NAME_PATTERN.matcher(item.getCollectionItemName()).matches()) {
+ throw new ConfigurationPersistenceException("Invalid collection item name: " + item.getCollectionItemName());
+ }
+ if (keyNames.contains(item.getCollectionItemName())) {
+ throw new ConfigurationPersistenceException("Duplicate collection item name: " + item.getCollectionItemName());
+ }
+ keyNames.add(item.getCollectionItemName());
+ }
+ }
/**
* @return Collection of configuration collection items
diff --git a/src/test/java/org/apache/sling/caconfig/spi/ConfigurationCollectionPersistDataTest.java b/src/test/java/org/apache/sling/caconfig/spi/ConfigurationCollectionPersistDataTest.java
index 730bb7c..f62382a 100644
--- a/src/test/java/org/apache/sling/caconfig/spi/ConfigurationCollectionPersistDataTest.java
+++ b/src/test/java/org/apache/sling/caconfig/spi/ConfigurationCollectionPersistDataTest.java
@@ -28,16 +28,22 @@ import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableMap;
+
@RunWith(MockitoJUnitRunner.class)
public class ConfigurationCollectionPersistDataTest {
@Mock
- private Collection<ConfigurationPersistData> items;
- @Mock
private Map<String,Object> props;
@Test
public void testProperties() {
+ Collection<ConfigurationPersistData> items = ImmutableList.of(
+ new ConfigurationPersistData(ImmutableMap.<String, Object>of()).collectionItemName("item1"),
+ new ConfigurationPersistData(ImmutableMap.<String, Object>of()).collectionItemName("item2"),
+ new ConfigurationPersistData(ImmutableMap.<String, Object>of()).collectionItemName("item3"));
+
ConfigurationCollectionPersistData underTest = new ConfigurationCollectionPersistData(items)
.properties(props);
@@ -45,4 +51,34 @@ public class ConfigurationCollectionPersistDataTest {
assertSame(props, underTest.getProperties());
}
+ @Test(expected=ConfigurationPersistenceException.class)
+ public void testItemsDuplicateKeys() {
+ Collection<ConfigurationPersistData> itemList = ImmutableList.of(
+ new ConfigurationPersistData(ImmutableMap.<String, Object>of()).collectionItemName("item1"),
+ new ConfigurationPersistData(ImmutableMap.<String, Object>of()).collectionItemName("item2"),
+ new ConfigurationPersistData(ImmutableMap.<String, Object>of()).collectionItemName("item1"));
+
+ new ConfigurationCollectionPersistData(itemList);
+ }
+
+ @Test(expected=ConfigurationPersistenceException.class)
+ public void testItemsMissingItemName() {
+ Collection<ConfigurationPersistData> itemList = ImmutableList.of(
+ new ConfigurationPersistData(ImmutableMap.<String, Object>of()).collectionItemName("item1"),
+ new ConfigurationPersistData(ImmutableMap.<String, Object>of()).collectionItemName("item2"),
+ new ConfigurationPersistData(ImmutableMap.<String, Object>of()));
+
+ new ConfigurationCollectionPersistData(itemList);
+ }
+
+ @Test(expected=ConfigurationPersistenceException.class)
+ public void testItemsInvalidItemNAme() {
+ Collection<ConfigurationPersistData> itemList = ImmutableList.of(
+ new ConfigurationPersistData(ImmutableMap.<String, Object>of()).collectionItemName("item1"),
+ new ConfigurationPersistData(ImmutableMap.<String, Object>of()).collectionItemName("item2"),
+ new ConfigurationPersistData(ImmutableMap.<String, Object>of()).collectionItemName("item #1"));
+
+ new ConfigurationCollectionPersistData(itemList);
+ }
+
}
--
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.