You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ss...@apache.org on 2016/12/05 20:51:47 UTC
svn commit: r1772800 - in
/sling/trunk/contrib/extensions/contextaware-config:
impl/src/main/java/org/apache/sling/caconfig/impl/def/
impl/src/main/java/org/apache/sling/caconfig/management/
impl/src/main/java/org/apache/sling/caconfig/management/impl/...
Author: sseifert
Date: Mon Dec 5 20:51:47 2016
New Revision: 1772800
URL: http://svn.apache.org/viewvc?rev=1772800&view=rev
Log:
SLING-6367 Context-Aware Config: Delete Configurations via ConfigurationManager
Modified:
sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/impl/def/DefaultConfigurationPersistenceStrategy.java
sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/management/ConfigurationManager.java
sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/management/impl/ConfigurationManagerImpl.java
sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/management/impl/ConfigurationPersistenceStrategyMultiplexer.java
sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/impl/def/DefaultConfigurationPersistenceStrategyTest.java
sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/management/impl/ConfigurationManagerImplTest.java
sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/management/impl/ConfigurationPersistenceStrategyMultiplexerTest.java
sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/management/impl/CustomConfigurationPersistenceStrategy.java
sling/trunk/contrib/extensions/contextaware-config/spi/src/main/java/org/apache/sling/caconfig/spi/ConfigurationPersistenceStrategy.java
Modified: sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/impl/def/DefaultConfigurationPersistenceStrategy.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/impl/def/DefaultConfigurationPersistenceStrategy.java?rev=1772800&r1=1772799&r2=1772800&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/impl/def/DefaultConfigurationPersistenceStrategy.java (original)
+++ sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/impl/def/DefaultConfigurationPersistenceStrategy.java Mon Dec 5 20:51:47 2016
@@ -82,7 +82,7 @@ public class DefaultConfigurationPersist
}
@Override
- public boolean persist(ResourceResolver resourceResolver, String configResourcePath,
+ public boolean persistConfiguration(ResourceResolver resourceResolver, String configResourcePath,
ConfigurationPersistData data) {
if (!config.enabled()) {
return false;
@@ -93,7 +93,7 @@ public class DefaultConfigurationPersist
}
@Override
- public boolean persistCollection(ResourceResolver resourceResolver, String configResourceCollectionParentPath,
+ public boolean persistConfigurationCollection(ResourceResolver resourceResolver, String configResourceCollectionParentPath,
ConfigurationCollectionPersistData data) {
if (!config.enabled()) {
return false;
@@ -115,6 +115,24 @@ public class DefaultConfigurationPersist
commit(resourceResolver);
return true;
}
+
+ @Override
+ public boolean deleteConfiguration(ResourceResolver resourceResolver, String configResourcePath) {
+ if (!config.enabled()) {
+ return false;
+ }
+ Resource resource = resourceResolver.getResource(configResourcePath);
+ if (resource != null) {
+ try {
+ resourceResolver.delete(resource);
+ }
+ catch (PersistenceException ex) {
+ throw new ConfigurationPersistenceException("Unable to delete configuration at " + configResourcePath, ex);
+ }
+ }
+ commit(resourceResolver);
+ return true;
+ }
private Resource getOrCreateResource(ResourceResolver resourceResolver, String path, Map<String,Object> properties) {
try {
Modified: sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/management/ConfigurationManager.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/management/ConfigurationManager.java?rev=1772800&r1=1772799&r2=1772800&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/management/ConfigurationManager.java (original)
+++ sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/management/ConfigurationManager.java Mon Dec 5 20:51:47 2016
@@ -54,7 +54,7 @@ public interface ConfigurationManager {
@Nonnull ConfigurationCollectionData getConfigurationCollection(@Nonnull Resource resource, @Nonnull String configName);
/**
- * Write configuration to repository data using the inner-most context path as reference.
+ * Write configuration data to repository using the inner-most context path as reference.
* @param resource Context resource
* @param configName Configuration name
* @param values Values to be stored. All existing properties are erased and replaced with the new ones.
@@ -79,6 +79,13 @@ public interface ConfigurationManager {
* @return Configuration data. Is null when no configuration metadata exists.
*/
@CheckForNull ConfigurationData newCollectionItem(@Nonnull Resource resource, @Nonnull String configName);
+
+ /**
+ * Delete configuration or configuration collection data from repository using the inner-most context path as reference.
+ * @param resource Context resource
+ * @param configName Configuration name
+ */
+ void deleteConfiguration(@Nonnull Resource resource, @Nonnull String configName);
/**
* Get all configuration names.
Modified: sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/management/impl/ConfigurationManagerImpl.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/management/impl/ConfigurationManagerImpl.java?rev=1772800&r1=1772799&r2=1772800&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/management/impl/ConfigurationManagerImpl.java (original)
+++ sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/management/impl/ConfigurationManagerImpl.java Mon Dec 5 20:51:47 2016
@@ -187,7 +187,7 @@ public class ConfigurationManagerImpl im
if (configResourcePath == null) {
throw new ConfigurationPersistenceException("Unable to persist configuration: Configuration resolving strategy returned no path.");
}
- if (!configurationPersistenceStrategy.persist(resource.getResourceResolver(), configResourcePath, data)) {
+ if (!configurationPersistenceStrategy.persistConfiguration(resource.getResourceResolver(), configResourcePath, data)) {
throw new ConfigurationPersistenceException("Unable to persist configuration: No persistence strategy found.");
}
}
@@ -199,7 +199,7 @@ public class ConfigurationManagerImpl im
if (configResourceParentPath == null) {
throw new ConfigurationPersistenceException("Unable to persist configuration collection: Configuration resolving strategy returned no parent path.");
}
- if (!configurationPersistenceStrategy.persistCollection(resource.getResourceResolver(), configResourceParentPath, data)) {
+ if (!configurationPersistenceStrategy.persistConfigurationCollection(resource.getResourceResolver(), configResourceParentPath, data)) {
throw new ConfigurationPersistenceException("Unable to persist configuration: No persistence strategy found.");
}
}
@@ -216,6 +216,18 @@ public class ConfigurationManagerImpl im
}
@Override
+ public void deleteConfiguration(Resource resource, String configName) {
+ ConfigNameUtil.ensureValidConfigName(configName);
+ String configResourcePath = configurationResourceResolvingStrategy.getResourcePath(resource, CONFIGS_PARENT_NAME, configName);
+ if (configResourcePath == null) {
+ throw new ConfigurationPersistenceException("Unable to delete configuration: Configuration resolving strategy returned no path.");
+ }
+ if (!configurationPersistenceStrategy.deleteConfiguration(resource.getResourceResolver(), configResourcePath)) {
+ throw new ConfigurationPersistenceException("Unable to delete configuration: No persistence strategy found.");
+ }
+ }
+
+ @Override
public SortedSet<String> getConfigurationNames() {
return configurationMetadataProvider.getConfigurationNames();
}
@@ -287,5 +299,5 @@ public class ConfigurationManagerImpl im
public String getPersistenceResourcePath(String configResourcePath) {
return configurationPersistenceStrategy.getResourcePath(configResourcePath);
}
-
+
}
Modified: sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/management/impl/ConfigurationPersistenceStrategyMultiplexer.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/management/impl/ConfigurationPersistenceStrategyMultiplexer.java?rev=1772800&r1=1772799&r2=1772800&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/management/impl/ConfigurationPersistenceStrategyMultiplexer.java (original)
+++ sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/management/impl/ConfigurationPersistenceStrategyMultiplexer.java Mon Dec 5 20:51:47 2016
@@ -85,10 +85,10 @@ public class ConfigurationPersistenceStr
* Persist configuration data with the first implementation that accepts it.
*/
@Override
- public boolean persist(ResourceResolver resourceResolver, String configResourcePath,
+ public boolean persistConfiguration(ResourceResolver resourceResolver, String configResourcePath,
ConfigurationPersistData data) {
for (ConfigurationPersistenceStrategy item : items) {
- if (item.persist(resourceResolver, configResourcePath, data)) {
+ if (item.persistConfiguration(resourceResolver, configResourcePath, data)) {
return true;
}
}
@@ -99,14 +99,26 @@ public class ConfigurationPersistenceStr
* Persist configuration data with the first implementation that accepts it.
*/
@Override
- public boolean persistCollection(ResourceResolver resourceResolver, String configResourceCollectionParentPath,
+ public boolean persistConfigurationCollection(ResourceResolver resourceResolver, String configResourceCollectionParentPath,
ConfigurationCollectionPersistData data) {
for (ConfigurationPersistenceStrategy item : items) {
- if (item.persistCollection(resourceResolver, configResourceCollectionParentPath, data)) {
+ if (item.persistConfigurationCollection(resourceResolver, configResourceCollectionParentPath, data)) {
return true;
}
}
return false;
}
+ @Override
+ public boolean deleteConfiguration(ResourceResolver resourceResolver, String configResourcePath) {
+ for (ConfigurationPersistenceStrategy item : items) {
+ if (item.deleteConfiguration(resourceResolver, configResourcePath)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+
+
}
Modified: sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/impl/def/DefaultConfigurationPersistenceStrategyTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/impl/def/DefaultConfigurationPersistenceStrategyTest.java?rev=1772800&r1=1772799&r2=1772800&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/impl/def/DefaultConfigurationPersistenceStrategyTest.java (original)
+++ sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/impl/def/DefaultConfigurationPersistenceStrategyTest.java Mon Dec 5 20:51:47 2016
@@ -63,11 +63,11 @@ public class DefaultConfigurationPersist
}
@Test
- public void testPersist() throws Exception {
+ public void testPersistConfiguration() throws Exception {
ConfigurationPersistenceStrategy underTest = context.registerInjectActivateService(new DefaultConfigurationPersistenceStrategy());
// store config data
- assertTrue(underTest.persist(context.resourceResolver(), "/conf/test",
+ assertTrue(underTest.persistConfiguration(context.resourceResolver(), "/conf/test",
new ConfigurationPersistData(ImmutableMap.<String,Object>of("prop1", "value1", "prop2", 5))));
context.resourceResolver().commit();
@@ -76,7 +76,7 @@ public class DefaultConfigurationPersist
assertEquals((Integer)5, props.get("prop2", Integer.class));
// remove config data
- assertTrue(underTest.persist(context.resourceResolver(), "/conf/test",
+ assertTrue(underTest.persistConfiguration(context.resourceResolver(), "/conf/test",
new ConfigurationPersistData(ImmutableMap.<String,Object>of())));
context.resourceResolver().commit();
@@ -84,14 +84,16 @@ public class DefaultConfigurationPersist
assertNull(props.get("prop1", String.class));
assertNull(props.get("prop2", Integer.class));
+ underTest.deleteConfiguration(context.resourceResolver(), "/conf/test");
+ assertNull(context.resourceResolver().getResource("/conf/test"));
}
@Test
- public void testPersistCollection() throws Exception {
+ public void testPersistConfigurationCollection() throws Exception {
ConfigurationPersistenceStrategy underTest = context.registerInjectActivateService(new DefaultConfigurationPersistenceStrategy());
// store new config collection items
- assertTrue(underTest.persistCollection(context.resourceResolver(), "/conf/test",
+ assertTrue(underTest.persistConfigurationCollection(context.resourceResolver(), "/conf/test",
new ConfigurationCollectionPersistData(ImmutableList.of(
new ConfigurationPersistData(ImmutableMap.<String,Object>of("prop1", "value1")).collectionItemName("0"),
new ConfigurationPersistData(ImmutableMap.<String,Object>of("prop2", 5)).collectionItemName("1"))
@@ -111,12 +113,15 @@ public class DefaultConfigurationPersist
"sling:resourceType", "/a/b/c"));
// remove config collection items
- assertTrue(underTest.persistCollection(context.resourceResolver(), "/conf/test",
+ assertTrue(underTest.persistConfigurationCollection(context.resourceResolver(), "/conf/test",
new ConfigurationCollectionPersistData(ImmutableList.<ConfigurationPersistData>of())));
context.resourceResolver().commit();
resource = context.resourceResolver().getResource("/conf/test");
assertEquals(0, ImmutableList.copyOf(resource.getChildren()).size());
+
+ underTest.deleteConfiguration(context.resourceResolver(), "/conf/test");
+ assertNull(context.resourceResolver().getResource("/conf/test"));
}
@Test
@@ -128,10 +133,11 @@ public class DefaultConfigurationPersist
assertNull(underTest.getResource(resource));
assertNull(underTest.getResourcePath(resource.getPath()));
- assertFalse(underTest.persist(context.resourceResolver(), "/conf/test",
+ assertFalse(underTest.persistConfiguration(context.resourceResolver(), "/conf/test",
new ConfigurationPersistData(ImmutableMap.<String,Object>of())));
- assertFalse(underTest.persistCollection(context.resourceResolver(), "/conf/test",
+ assertFalse(underTest.persistConfigurationCollection(context.resourceResolver(), "/conf/test",
new ConfigurationCollectionPersistData(ImmutableList.<ConfigurationPersistData>of())));
+ assertFalse(underTest.deleteConfiguration(context.resourceResolver(), "/conf/test"));
}
}
Modified: sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/management/impl/ConfigurationManagerImplTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/management/impl/ConfigurationManagerImplTest.java?rev=1772800&r1=1772799&r2=1772800&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/management/impl/ConfigurationManagerImplTest.java (original)
+++ sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/management/impl/ConfigurationManagerImplTest.java Mon Dec 5 20:51:47 2016
@@ -780,4 +780,28 @@ public class ConfigurationManagerImplTes
assertEquals("value3_persist", subListData[2].getValues().get("prop1", String.class));
}
+ @Test
+ public void testDeleteConfiguration() throws Exception {
+ underTest.deleteConfiguration(contextResource, CONFIG_NAME);
+
+ ConfigurationData configData = underTest.getConfiguration(contextResource, CONFIG_NAME);
+ assertEquals(ImmutableSet.of("prop1", "prop2", "prop3"), configData.getPropertyNames());
+
+ assertNull(configData.getValues().get("prop1", String.class));
+ assertEquals("defValue", configData.getEffectiveValues().get("prop1", String.class));
+ assertNull(configData.getValues().get("prop2", String.class));
+ assertNull(configData.getEffectiveValues().get("prop2", String.class));
+ assertNull(configData.getValues().get("prop3", Integer.class));
+ assertEquals((Integer)5, configData.getEffectiveValues().get("prop3", Integer.class));
+ }
+
+ @Test
+ public void testDeleteConfigurationCollection() throws Exception {
+ underTest.deleteConfiguration(contextResource, CONFIG_COL_NAME);
+
+ ConfigurationCollectionData configCollectionData = underTest.getConfigurationCollection(contextResource, CONFIG_COL_NAME);
+ List<ConfigurationData> configDatas = ImmutableList.copyOf(configCollectionData.getItems());
+ assertEquals(0, configDatas.size());
+ }
+
}
Modified: sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/management/impl/ConfigurationPersistenceStrategyMultiplexerTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/management/impl/ConfigurationPersistenceStrategyMultiplexerTest.java?rev=1772800&r1=1772799&r2=1772800&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/management/impl/ConfigurationPersistenceStrategyMultiplexerTest.java (original)
+++ sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/management/impl/ConfigurationPersistenceStrategyMultiplexerTest.java Mon Dec 5 20:51:47 2016
@@ -59,11 +59,12 @@ public class ConfigurationPersistenceStr
public void testWithNoStrategies() {
assertNull(underTest.getResource(resource1));
assertNull(underTest.getResourcePath(resource1.getPath()));
- assertFalse(underTest.persist(context.resourceResolver(), "/conf/test1", new ConfigurationPersistData(resource1.getValueMap())));
- assertFalse(underTest.persistCollection(context.resourceResolver(), "/conf/testCol",
+ assertFalse(underTest.persistConfiguration(context.resourceResolver(), "/conf/test1", new ConfigurationPersistData(resource1.getValueMap())));
+ assertFalse(underTest.persistConfigurationCollection(context.resourceResolver(), "/conf/testCol",
new ConfigurationCollectionPersistData(ImmutableList.of(
new ConfigurationPersistData(resource1.getValueMap()).collectionItemName(resource1.getName()),
new ConfigurationPersistData(resource2.getValueMap()).collectionItemName(resource2.getName())))));
+ assertFalse(underTest.deleteConfiguration(context.resourceResolver(), "/conf/test1"));
}
@Test
@@ -72,11 +73,12 @@ public class ConfigurationPersistenceStr
assertSame(resource1, underTest.getResource(resource1));
assertEquals(resource1.getPath(), underTest.getResourcePath(resource1.getPath()));
- assertTrue(underTest.persist(context.resourceResolver(), "/conf/test1", new ConfigurationPersistData(resource1.getValueMap())));
- assertTrue(underTest.persistCollection(context.resourceResolver(), "/conf/testCol",
+ assertTrue(underTest.persistConfiguration(context.resourceResolver(), "/conf/test1", new ConfigurationPersistData(resource1.getValueMap())));
+ assertTrue(underTest.persistConfigurationCollection(context.resourceResolver(), "/conf/testCol",
new ConfigurationCollectionPersistData(ImmutableList.of(
new ConfigurationPersistData(resource1.getValueMap()).collectionItemName(resource1.getName()),
new ConfigurationPersistData(resource2.getValueMap()).collectionItemName(resource2.getName())))));
+ assertTrue(underTest.deleteConfiguration(context.resourceResolver(), "/conf/test1"));
}
@Test
@@ -93,15 +95,19 @@ public class ConfigurationPersistenceStr
return resource2.getPath();
}
@Override
- public boolean persist(ResourceResolver resourceResolver, String configResourcePath,
+ public boolean persistConfiguration(ResourceResolver resourceResolver, String configResourcePath,
ConfigurationPersistData data) {
return true;
}
@Override
- public boolean persistCollection(ResourceResolver resourceResolver,
+ public boolean persistConfigurationCollection(ResourceResolver resourceResolver,
String configResourceCollectionParentPath, ConfigurationCollectionPersistData data) {
return false;
}
+ @Override
+ public boolean deleteConfiguration(ResourceResolver resourceResolver, String configResourcePath) {
+ return false;
+ }
}, Constants.SERVICE_RANKING, 2000);
// strategy 2
@@ -115,25 +121,30 @@ public class ConfigurationPersistenceStr
return resource1.getPath();
}
@Override
- public boolean persist(ResourceResolver resourceResolver, String configResourcePath,
+ public boolean persistConfiguration(ResourceResolver resourceResolver, String configResourcePath,
ConfigurationPersistData data) {
return false;
}
@Override
- public boolean persistCollection(ResourceResolver resourceResolver,
+ public boolean persistConfigurationCollection(ResourceResolver resourceResolver,
String configResourceCollectionParentPath, ConfigurationCollectionPersistData data) {
return true;
}
+ @Override
+ public boolean deleteConfiguration(ResourceResolver resourceResolver, String configResourcePath) {
+ return true;
+ }
}, Constants.SERVICE_RANKING, 1000);
assertSame(resource2, underTest.getResource(resource1));
assertEquals(resource2.getPath(), underTest.getResourcePath(resource1.getPath()));
- assertTrue(underTest.persist(context.resourceResolver(), "/conf/test1", new ConfigurationPersistData(resource1.getValueMap())));
- assertTrue(underTest.persistCollection(context.resourceResolver(), "/conf/testCol",
+ assertTrue(underTest.persistConfiguration(context.resourceResolver(), "/conf/test1", new ConfigurationPersistData(resource1.getValueMap())));
+ assertTrue(underTest.persistConfigurationCollection(context.resourceResolver(), "/conf/testCol",
new ConfigurationCollectionPersistData(ImmutableList.of(
new ConfigurationPersistData(resource1.getValueMap()).collectionItemName(resource1.getName()),
new ConfigurationPersistData(resource2.getValueMap()).collectionItemName(resource2.getName())))));
+ assertTrue(underTest.deleteConfiguration(context.resourceResolver(), "/conf/test1"));
}
}
Modified: sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/management/impl/CustomConfigurationPersistenceStrategy.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/management/impl/CustomConfigurationPersistenceStrategy.java?rev=1772800&r1=1772799&r2=1772800&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/management/impl/CustomConfigurationPersistenceStrategy.java (original)
+++ sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/management/impl/CustomConfigurationPersistenceStrategy.java Mon Dec 5 20:51:47 2016
@@ -55,14 +55,15 @@ public class CustomConfigurationPersiste
}
@Override
- public boolean persist(ResourceResolver resourceResolver, String configResourcePath,
+ public boolean persistConfiguration(ResourceResolver resourceResolver, String configResourcePath,
ConfigurationPersistData data) {
getOrCreateResource(resourceResolver, configResourcePath + "/" + CHILD_NODE_NAME, data.getProperties());
+ commit(resourceResolver);
return true;
}
@Override
- public boolean persistCollection(ResourceResolver resourceResolver, String configResourceCollectionParentPath,
+ public boolean persistConfigurationCollection(ResourceResolver resourceResolver, String configResourceCollectionParentPath,
ConfigurationCollectionPersistData data) {
Resource configResourceParent = getOrCreateResource(resourceResolver, configResourceCollectionParentPath, ValueMap.EMPTY);
@@ -78,9 +79,25 @@ public class CustomConfigurationPersiste
replaceProperties(configResourceParent, data.getProperties());
}
+ commit(resourceResolver);
return true;
}
+ @Override
+ public boolean deleteConfiguration(ResourceResolver resourceResolver, String configResourcePath) {
+ Resource resource = resourceResolver.getResource(configResourcePath);
+ if (resource != null) {
+ try {
+ resourceResolver.delete(resource);
+ }
+ catch (PersistenceException ex) {
+ throw new ConfigurationPersistenceException("Unable to delete configuration at " + configResourcePath, ex);
+ }
+ }
+ commit(resourceResolver);
+ return true;
+ }
+
private Resource getOrCreateResource(ResourceResolver resourceResolver, String path, Map<String,Object> properties) {
try {
Resource resource = ResourceUtil.getOrCreateResource(resourceResolver, path, DEFAULT_RESOURCE_TYPE, DEFAULT_RESOURCE_TYPE, false);
@@ -116,4 +133,13 @@ public class CustomConfigurationPersiste
modValueMap.putAll(properties);
}
+ private void commit(ResourceResolver resourceResolver) {
+ try {
+ resourceResolver.commit();
+ }
+ catch (PersistenceException ex) {
+ throw new ConfigurationPersistenceException("Unable to save configuration: " + ex.getMessage(), ex);
+ }
+ }
+
}
Modified: sling/trunk/contrib/extensions/contextaware-config/spi/src/main/java/org/apache/sling/caconfig/spi/ConfigurationPersistenceStrategy.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/contextaware-config/spi/src/main/java/org/apache/sling/caconfig/spi/ConfigurationPersistenceStrategy.java?rev=1772800&r1=1772799&r2=1772800&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/contextaware-config/spi/src/main/java/org/apache/sling/caconfig/spi/ConfigurationPersistenceStrategy.java (original)
+++ sling/trunk/contrib/extensions/contextaware-config/spi/src/main/java/org/apache/sling/caconfig/spi/ConfigurationPersistenceStrategy.java Mon Dec 5 20:51:47 2016
@@ -55,9 +55,9 @@ public interface ConfigurationPersistenc
* @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 ConfigurationPersistenc
* @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);
}