use of org.apache.sling.caconfig.spi.ConfigurationCollectionPersistData in project sling by apache.
the class DefaultConfigurationPersistenceStrategyTest method testPersistConfigurationCollection.
@Test
public void testPersistConfigurationCollection() throws Exception {
ConfigurationPersistenceStrategy2 underTest = context.registerInjectActivateService(new DefaultConfigurationPersistenceStrategy());
// store new config collection items
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"))).properties(ImmutableMap.<String, Object>of("prop1", "abc", "sling:resourceType", "/a/b/c"))));
context.resourceResolver().commit();
Resource resource = context.resourceResolver().getResource("/conf/test");
assertEquals(2, ImmutableList.copyOf(resource.getChildren()).size());
ValueMap props0 = context.resourceResolver().getResource("/conf/test/0").getValueMap();
assertEquals("value1", props0.get("prop1", String.class));
ValueMap props1 = context.resourceResolver().getResource("/conf/test/1").getValueMap();
assertEquals((Integer) 5, props1.get("prop2", Integer.class));
assertThat(resource, ResourceMatchers.props("prop1", "abc", "sling:resourceType", "/a/b/c"));
// remove config collection items
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"));
}
use of org.apache.sling.caconfig.spi.ConfigurationCollectionPersistData in project sling by apache.
the class ConfigurationPersistenceStrategyMultiplexerImplTest method testMultipleStrategies.
@SuppressWarnings("deprecation")
@Test
public void testMultipleStrategies() {
// strategy 1 (using old ConfigurationPersistenceStrategy with bridge to ConfigurationPersistenceStrategy2)
context.registerService(org.apache.sling.caconfig.spi.ConfigurationPersistenceStrategy.class, new org.apache.sling.caconfig.spi.ConfigurationPersistenceStrategy() {
@Override
public Resource getResource(Resource resource) {
return resource2;
}
@Override
public String getResourcePath(String resourcePath) {
return resource2.getPath();
}
@Override
public boolean persistConfiguration(ResourceResolver resourceResolver, String configResourcePath, ConfigurationPersistData data) {
return true;
}
@Override
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
context.registerService(ConfigurationPersistenceStrategy2.class, new ConfigurationPersistenceStrategy2() {
@Override
public Resource getResource(Resource resource) {
return resource1;
}
@Override
public Resource getCollectionParentResource(Resource resource) {
return resource1;
}
@Override
public Resource getCollectionItemResource(Resource resource) {
return resource1;
}
@Override
public String getResourcePath(String resourcePath) {
return resource1.getPath();
}
@Override
public String getCollectionParentResourcePath(String resourcePath) {
return resource1.getPath();
}
@Override
public String getCollectionItemResourcePath(String resourcePath) {
return resource1.getPath();
}
@Override
public String getConfigName(String configName, String relatedConfigPath) {
return resource1.getPath();
}
@Override
public String getCollectionParentConfigName(String configName, String relatedConfigPath) {
return resource1.getPath();
}
@Override
public String getCollectionItemConfigName(String configName, String relatedConfigPath) {
return resource1.getPath();
}
@Override
public boolean persistConfiguration(ResourceResolver resourceResolver, String configResourcePath, ConfigurationPersistData data) {
return false;
}
@Override
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));
assertSame(resource1, underTest.getCollectionParentResource(resource1));
assertSame(resource2, underTest.getCollectionItemResource(resource1));
assertEquals(resource2.getPath(), underTest.getResourcePath(resource1.getPath()));
assertEquals(resource1.getPath(), underTest.getCollectionParentResourcePath(resource1.getPath()));
assertEquals(resource2.getPath(), underTest.getCollectionItemResourcePath(resource1.getPath()));
assertEquals(resource2.getPath(), underTest.getConfigName(resource1.getPath(), null));
assertEquals(resource1.getPath(), underTest.getCollectionParentConfigName(resource1.getPath(), null));
assertEquals(resource2.getPath(), underTest.getCollectionItemConfigName(resource1.getPath(), null));
assertEquals(ImmutableList.of(resource2.getPath(), resource1.getPath()), ImmutableList.copyOf(underTest.getAllConfigNames(resource1.getPath())));
assertEquals(ImmutableList.of(resource1.getPath()), ImmutableList.copyOf(underTest.getAllCollectionParentConfigNames(resource1.getPath())));
assertEquals(ImmutableList.of(resource2.getPath(), resource1.getPath()), ImmutableList.copyOf(underTest.getAllCollectionItemConfigNames(resource1.getPath())));
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"));
}
use of org.apache.sling.caconfig.spi.ConfigurationCollectionPersistData in project sling by apache.
the class ConfigurationManagerImplTest method testPersistConfigurationCollection_Nested.
@Test
public void testPersistConfigurationCollection_Nested() throws Exception {
underTest.persistConfigurationCollection(contextResourceLevel2, getConfigResolvePath(CONFIG_NESTED_NAME) + "/propSubList", new ConfigurationCollectionPersistData(ImmutableList.of(new ConfigurationPersistData(ImmutableMap.<String, Object>of("prop1", "value1_persist")).collectionItemName("item1"), new ConfigurationPersistData(ImmutableMap.<String, Object>of("prop1", "value2_persist")).collectionItemName("item2"), new ConfigurationPersistData(ImmutableMap.<String, Object>of("prop1", "value3_persist")).collectionItemName("item3"))));
context.resourceResolver().commit();
ConfigurationData configData = underTest.getConfiguration(contextResourceLevel2, CONFIG_NESTED_NAME);
ConfigurationData[] subListData = configData.getValues().get("propSubList", ConfigurationData[].class);
assertEquals(3, subListData.length);
assertEquals("value1_persist", subListData[0].getValues().get("prop1", String.class));
assertEquals("value2_persist", subListData[1].getValues().get("prop1", String.class));
assertEquals("value3_persist", subListData[2].getValues().get("prop1", String.class));
}
use of org.apache.sling.caconfig.spi.ConfigurationCollectionPersistData in project sling by apache.
the class ConfigurationManagerIT method testWriteConfigCollection.
@Test
public void testWriteConfigCollection() throws Exception {
// write configuration data via configuration manager
Map<String, Object> values1 = new HashMap<>();
values1.put("stringParam", "valueA");
values1.put("stringParamDefault", "valueB");
Map<String, Object> values2 = new HashMap<>();
values2.put("intParam", 55);
values2.put("boolParam", true);
List<ConfigurationPersistData> items = new ArrayList<>();
items.add(new ConfigurationPersistData(values1).collectionItemName("item1"));
items.add(new ConfigurationPersistData(values2).collectionItemName("item2"));
configManager.persistConfigurationCollection(resourcePage1, CONFIG_NAME, new ConfigurationCollectionPersistData(items));
resourceResolver.commit();
// read config via configuration resolver
Collection<SimpleConfig> config = configResolver.get(resourcePage1).asCollection(SimpleConfig.class);
assertEquals(2, config.size());
Iterator<SimpleConfig> configIterator = config.iterator();
SimpleConfig config1 = configIterator.next();
SimpleConfig config2 = configIterator.next();
assertEquals("valueA", config1.stringParam());
assertEquals("valueB", config1.stringParamDefault());
assertEquals(55, (int) config2.intParam());
assertEquals(true, config2.boolParam());
}
use of org.apache.sling.caconfig.spi.ConfigurationCollectionPersistData in project sling by apache.
the class MockContextAwareConfig method writeConfigurationCollection.
/**
* Writes a collection of configuration parameters using the primary
* configured persistence provider.
* @param context Sling context
* @param contextPath Configuration id
* @param configName Config name
* @param values Configuration values
*/
public static void writeConfigurationCollection(SlingContextImpl context, String contextPath, String configName, Collection<Map<String, Object>> values) {
ConfigurationManager configManager = context.getService(ConfigurationManager.class);
Resource contextResource = context.resourceResolver().getResource(contextPath);
List<ConfigurationPersistData> items = new ArrayList<>();
int index = 0;
for (Map<String, Object> map : values) {
items.add(new ConfigurationPersistData(map).collectionItemName("item" + (index++)));
}
configManager.persistConfigurationCollection(contextResource, configName, new ConfigurationCollectionPersistData(items));
}
Aggregations