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);
}