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/11/30 21:00:11 UTC
svn commit: r1772117 [1/2] - 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...
Author: sseifert
Date: Wed Nov 30 21:00:11 2016
New Revision: 1772117
URL: http://svn.apache.org/viewvc?rev=1772117&view=rev
Log:
SLING-6347 Context-Aware Config: Access to Inheritance Properties in Management API, SPI
Added:
sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/management/ConfigurationCollectionData.java (with props)
sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/management/impl/ConfigurationCollectionDataImpl.java (with props)
sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/management/impl/ConfigurationCollectionDataImplTest.java (with props)
sling/trunk/contrib/extensions/contextaware-config/spi/src/main/java/org/apache/sling/caconfig/spi/ConfigurationCollectionPersistData.java (with props)
sling/trunk/contrib/extensions/contextaware-config/spi/src/main/java/org/apache/sling/caconfig/spi/ConfigurationPersistData.java (with props)
sling/trunk/contrib/extensions/contextaware-config/spi/src/test/java/org/apache/sling/caconfig/spi/ConfigurationCollectionPersistDataTest.java (with props)
sling/trunk/contrib/extensions/contextaware-config/spi/src/test/java/org/apache/sling/caconfig/spi/ConfigurationPersistDataTest.java (with props)
Removed:
sling/trunk/contrib/extensions/contextaware-config/spi/src/main/java/org/apache/sling/caconfig/spi/ResourceCollectionItem.java
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/ConfigurationData.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/ConfigurationDataImpl.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/main/java/org/apache/sling/caconfig/management/impl/console/ConfigurationWebConsolePlugin.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/ConfigurationDataImplTest.java
sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/management/impl/ConfigurationManagerImplNoDefaultTest.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/integration-tests/src/test/java/org/apache/sling/caconfig/it/ConfigurationManagerIT.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=1772117&r1=1772116&r2=1772117&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 Wed Nov 30 21:00:11 2016
@@ -18,7 +18,6 @@
*/
package org.apache.sling.caconfig.impl.def;
-import java.util.Collection;
import java.util.HashSet;
import java.util.Map;
@@ -29,9 +28,10 @@ import org.apache.sling.api.resource.Res
import org.apache.sling.api.resource.ResourceResolver;
import org.apache.sling.api.resource.ResourceUtil;
import org.apache.sling.api.resource.ValueMap;
+import org.apache.sling.caconfig.spi.ConfigurationCollectionPersistData;
+import org.apache.sling.caconfig.spi.ConfigurationPersistData;
import org.apache.sling.caconfig.spi.ConfigurationPersistenceException;
import org.apache.sling.caconfig.spi.ConfigurationPersistenceStrategy;
-import org.apache.sling.caconfig.spi.ResourceCollectionItem;
import org.osgi.service.component.ComponentContext;
import org.osgi.service.component.annotations.Activate;
import org.osgi.service.component.annotations.Component;
@@ -82,26 +82,35 @@ public class DefaultConfigurationPersist
}
@Override
- public boolean persist(ResourceResolver resourceResolver, String configResourcePath, Map<String,Object> properties) {
+ public boolean persist(ResourceResolver resourceResolver, String configResourcePath,
+ ConfigurationPersistData data) {
if (!config.enabled()) {
return false;
}
- getOrCreateResource(resourceResolver, configResourcePath, properties);
+ getOrCreateResource(resourceResolver, configResourcePath, data.getProperties());
return true;
}
@Override
public boolean persistCollection(ResourceResolver resourceResolver, String configResourceCollectionParentPath,
- Collection<ResourceCollectionItem> resourceCollectionItems) {
+ ConfigurationCollectionPersistData data) {
if (!config.enabled()) {
return false;
}
Resource configResourceParent = getOrCreateResource(resourceResolver, configResourceCollectionParentPath, ValueMap.EMPTY);
+
+ // delete existing children and create new ones
deleteChildren(configResourceParent);
- for (ResourceCollectionItem item : resourceCollectionItems) {
+ for (ConfigurationPersistData item : data.getItems()) {
String path = configResourceParent.getPath() + "/" + item.getCollectionItemName();
- getOrCreateResource(resourceResolver, path, item.getValues());
+ getOrCreateResource(resourceResolver, path, item.getProperties());
+ }
+
+ // if resource collection parent properties are given replace them as well
+ if (data.getProperties() != null) {
+ replaceProperties(configResourceParent, data.getProperties());
}
+
return true;
}
@@ -130,9 +139,9 @@ public class DefaultConfigurationPersist
private void replaceProperties(Resource resource, Map<String,Object> properties) {
ModifiableValueMap modValueMap = resource.adaptTo(ModifiableValueMap.class);
- // remove all existing properties that do not have jcr: or sling: namespace
+ // remove all existing properties that do not have jcr: namespace
for (String propertyName : new HashSet<>(modValueMap.keySet())) {
- if (StringUtils.startsWith(propertyName, "jcr:") || StringUtils.startsWith(propertyName, "sling:")) {
+ if (StringUtils.startsWith(propertyName, "jcr:")) {
continue;
}
modValueMap.remove(propertyName);
Added: sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/management/ConfigurationCollectionData.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/management/ConfigurationCollectionData.java?rev=1772117&view=auto
==============================================================================
--- sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/management/ConfigurationCollectionData.java (added)
+++ sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/management/ConfigurationCollectionData.java Wed Nov 30 21:00:11 2016
@@ -0,0 +1,56 @@
+/*
+ * 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.management;
+
+import java.util.Collection;
+import java.util.Map;
+
+import javax.annotation.CheckForNull;
+import javax.annotation.Nonnull;
+
+import org.osgi.annotation.versioning.ProviderType;
+
+/**
+ * Provides access to the configuration collection data and metadata for a given context path.
+ */
+@ProviderType
+public interface ConfigurationCollectionData {
+
+ /**
+ * Get configuration name.
+ * @return Configuration name
+ */
+ @Nonnull String getConfigName();
+
+ /**
+ * @return Configuration collection items
+ */
+ @Nonnull Collection<ConfigurationData> getItems();
+
+ /**
+ * @return Path of the configuration collection resource parent path or null if it cannot be determined.
+ */
+ @CheckForNull String getResourcePath();
+
+ /**
+ * @return Properties for the configuration collection itself. Does not contain configuration data, but control data e.g. for enabling collection inheritance.
+ */
+ @Nonnull Map<String, Object> getProperties();
+
+}
Propchange: sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/management/ConfigurationCollectionData.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/management/ConfigurationCollectionData.java
------------------------------------------------------------------------------
--- svn:keywords (added)
+++ svn:keywords Wed Nov 30 21:00:11 2016
@@ -0,0 +1 @@
+LastChangedDate LastChangedRevision LastChangedBy HeadURL Id Author
Propchange: sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/management/ConfigurationCollectionData.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/management/ConfigurationData.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/management/ConfigurationData.java?rev=1772117&r1=1772116&r2=1772117&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/management/ConfigurationData.java (original)
+++ sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/management/ConfigurationData.java Wed Nov 30 21:00:11 2016
@@ -45,10 +45,7 @@ public interface ConfigurationData {
@CheckForNull String getCollectionItemName();
/**
- * Path of the configuration resource. The resource may not exist, in this case
- * inherited or default values may be returned.
- * If the configuration data is saved, this path is used.
- * @return Configuration resource path or null if it cannot be determined
+ * @return Path of the configuration resource or null if it cannot be determined.
*/
@CheckForNull String getResourcePath();
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=1772117&r1=1772116&r2=1772117&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 Wed Nov 30 21:00:11 2016
@@ -18,15 +18,14 @@
*/
package org.apache.sling.caconfig.management;
-import java.util.Collection;
-import java.util.Map;
import java.util.SortedSet;
import javax.annotation.CheckForNull;
import javax.annotation.Nonnull;
import org.apache.sling.api.resource.Resource;
-import org.apache.sling.caconfig.spi.ResourceCollectionItem;
+import org.apache.sling.caconfig.spi.ConfigurationCollectionPersistData;
+import org.apache.sling.caconfig.spi.ConfigurationPersistData;
import org.apache.sling.caconfig.spi.metadata.ConfigurationMetadata;
import org.osgi.annotation.versioning.ProviderType;
@@ -44,7 +43,7 @@ public interface ConfigurationManager {
* @param configName Configuration name
* @return Configuration data. Is null when no configuration resource found and no configuration metadata exists.
*/
- @CheckForNull ConfigurationData get(@Nonnull Resource resource, @Nonnull String configName);
+ @CheckForNull ConfigurationData getConfiguration(@Nonnull Resource resource, @Nonnull String configName);
/**
* Get configuration data collection for the given context resource and configuration name.
@@ -52,7 +51,7 @@ public interface ConfigurationManager {
* @param configName Configuration name
* @return Configuration data collection. Is empty when no configuration resources found.
*/
- @Nonnull Collection<ConfigurationData> getCollection(@Nonnull Resource resource, @Nonnull String configName);
+ @Nonnull ConfigurationCollectionData getConfigurationCollection(@Nonnull Resource resource, @Nonnull String configName);
/**
* Write configuration to repository data using the inner-most context path as reference.
@@ -60,7 +59,8 @@ public interface ConfigurationManager {
* @param configName Configuration name
* @param values Values to be stored. All existing properties are erased and replaced with the new ones.
*/
- void persist(@Nonnull Resource resource, @Nonnull String configName, @Nonnull Map<String,Object> values);
+ void persistConfiguration(@Nonnull Resource resource, @Nonnull String configName,
+ @Nonnull ConfigurationPersistData data);
/**
* Write configuration data collection using the inner-most context path as reference.
@@ -69,8 +69,8 @@ public interface ConfigurationManager {
* @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.
*/
- void persistCollection(@Nonnull Resource resource, @Nonnull String configName,
- @Nonnull Collection<ResourceCollectionItem> resourceCollectionItems);
+ void persistConfigurationCollection(@Nonnull Resource resource, @Nonnull String configName,
+ @Nonnull ConfigurationCollectionPersistData data);
/**
* Creates a new empty configuration data item for a configuration data collection for the given configuration name.
Added: sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/management/impl/ConfigurationCollectionDataImpl.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/management/impl/ConfigurationCollectionDataImpl.java?rev=1772117&view=auto
==============================================================================
--- sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/management/impl/ConfigurationCollectionDataImpl.java (added)
+++ sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/management/impl/ConfigurationCollectionDataImpl.java Wed Nov 30 21:00:11 2016
@@ -0,0 +1,62 @@
+/*
+ * 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.management.impl;
+
+import java.util.Collection;
+import java.util.Map;
+
+import org.apache.sling.caconfig.management.ConfigurationCollectionData;
+import org.apache.sling.caconfig.management.ConfigurationData;
+
+final class ConfigurationCollectionDataImpl implements ConfigurationCollectionData {
+
+ private final String configName;
+ private final Collection<ConfigurationData> items;
+ private final String resourcePath;
+ private final Map<String,Object> properties;
+
+ public ConfigurationCollectionDataImpl(String configName, Collection<ConfigurationData> items,
+ String resourcePath, Map<String, Object> properties) {
+ this.configName = configName;
+ this.items = items;
+ this.resourcePath = resourcePath;
+ this.properties = properties;
+ }
+
+ @Override
+ public String getConfigName() {
+ return configName;
+ }
+
+ @Override
+ public Collection<ConfigurationData> getItems() {
+ return items;
+ }
+
+ @Override
+ public String getResourcePath() {
+ return resourcePath;
+ }
+
+ @Override
+ public Map<String, Object> getProperties() {
+ return properties;
+ }
+
+}
Propchange: sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/management/impl/ConfigurationCollectionDataImpl.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/management/impl/ConfigurationCollectionDataImpl.java
------------------------------------------------------------------------------
--- svn:keywords (added)
+++ svn:keywords Wed Nov 30 21:00:11 2016
@@ -0,0 +1 @@
+LastChangedDate LastChangedRevision LastChangedBy HeadURL Id Author
Propchange: sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/management/impl/ConfigurationCollectionDataImpl.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/management/impl/ConfigurationDataImpl.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/management/impl/ConfigurationDataImpl.java?rev=1772117&r1=1772116&r2=1772117&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/management/impl/ConfigurationDataImpl.java (original)
+++ sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/management/impl/ConfigurationDataImpl.java Wed Nov 30 21:00:11 2016
@@ -33,7 +33,6 @@ import org.apache.sling.api.resource.Res
import org.apache.sling.api.resource.ResourceUtil;
import org.apache.sling.api.resource.ValueMap;
import org.apache.sling.api.wrappers.ValueMapDecorator;
-import org.apache.sling.caconfig.impl.def.ConfigurationDefNameConstants;
import org.apache.sling.caconfig.impl.override.ConfigurationOverrideManager;
import org.apache.sling.caconfig.management.ConfigurationData;
import org.apache.sling.caconfig.management.ConfigurationManager;
@@ -61,10 +60,7 @@ final class ConfigurationDataImpl implem
private ValueMap effectiveValuesCache;
private static final Set<String> PROPERTIES_TO_IGNORE = new HashSet<>(Arrays.asList(
- "jcr:primaryType",
- "sling:resourceType",
- ConfigurationDefNameConstants.PROPERTY_CONFIG_PROPERTY_INHERIT
- ));
+ "jcr:primaryType"));
@SuppressWarnings("unchecked")
public ConfigurationDataImpl(ConfigurationMetadata configMetadata,
@@ -200,14 +196,14 @@ final class ConfigurationDataImpl implem
nestedConfigName = configurationPersistenceStrategy.getResourcePath(configName) + "/" + nestedConfigMetadata.getName();
}
if (propertyMetadata.getType().equals(ConfigurationMetadata.class)) {
- ConfigurationData configData = configurationManager.get(contextResource, nestedConfigName);
+ ConfigurationData configData = configurationManager.getConfiguration(contextResource, nestedConfigName);
if (configData != null) {
((ConfigurationDataImpl)configData).setConfigMetadata(nestedConfigMetadata);
}
props.put(propertyMetadata.getName(), configData);
}
else if (propertyMetadata.getType().equals(ConfigurationMetadata[].class)) {
- Collection<ConfigurationData> configDatas = configurationManager.getCollection(contextResource, nestedConfigName);
+ Collection<ConfigurationData> configDatas = configurationManager.getConfigurationCollection(contextResource, nestedConfigName).getItems();
for (ConfigurationData configData : configDatas) {
((ConfigurationDataImpl)configData).setConfigMetadata(nestedConfigMetadata);
}
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=1772117&r1=1772116&r2=1772117&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 Wed Nov 30 21:00:11 2016
@@ -35,11 +35,13 @@ import org.apache.sling.api.resource.Res
import org.apache.sling.caconfig.impl.ConfigurationInheritanceStrategyMultiplexer;
import org.apache.sling.caconfig.impl.metadata.ConfigurationMetadataProviderMultiplexer;
import org.apache.sling.caconfig.impl.override.ConfigurationOverrideManager;
+import org.apache.sling.caconfig.management.ConfigurationCollectionData;
import org.apache.sling.caconfig.management.ConfigurationData;
import org.apache.sling.caconfig.management.ConfigurationManager;
import org.apache.sling.caconfig.resource.impl.ConfigurationResourceResolvingStrategyMultiplexer;
+import org.apache.sling.caconfig.spi.ConfigurationCollectionPersistData;
+import org.apache.sling.caconfig.spi.ConfigurationPersistData;
import org.apache.sling.caconfig.spi.ConfigurationPersistenceException;
-import org.apache.sling.caconfig.spi.ResourceCollectionItem;
import org.apache.sling.caconfig.spi.metadata.ConfigurationMetadata;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Reference;
@@ -60,7 +62,7 @@ public class ConfigurationManagerImpl im
@SuppressWarnings("unchecked")
@Override
- public ConfigurationData get(Resource resource, String configName) {
+ public ConfigurationData getConfiguration(Resource resource, String configName) {
ConfigurationMetadata configMetadata = configurationMetadataProvider.getConfigurationMetadata(configName);
Resource configResource = null;
Iterator<Resource> configResourceInheritanceChain = configurationResourceResolvingStrategy
@@ -94,11 +96,12 @@ public class ConfigurationManagerImpl im
@SuppressWarnings("unchecked")
@Override
- public Collection<ConfigurationData> getCollection(Resource resource, String configName) {
+ public ConfigurationCollectionData getConfigurationCollection(Resource resource, String configName) {
ConfigurationMetadata configMetadata = configurationMetadataProvider.getConfigurationMetadata(configName);
String writebackConfigResourceCollectionParentPath = configurationResourceResolvingStrategy.getResourceCollectionParentPath(resource, CONFIGS_PARENT_NAME, configName);
List<ConfigurationData> configData = new ArrayList<>();
+ // get configuration resource items
Collection<Iterator<Resource>> configResourceInheritanceChains = configurationResourceResolvingStrategy
.getResourceCollectionInheritanceChain(resource, CONFIGS_PARENT_NAME, configName);
if (configResourceInheritanceChains != null) {
@@ -125,7 +128,22 @@ public class ConfigurationManagerImpl im
}
}
}
- return configData;
+
+ // get properties of parent resource of the current level
+ Map<String,Object> resourceCollectionParentProps = null;
+ if (writebackConfigResourceCollectionParentPath != null) {
+ Resource writebackConfigResourceCollectionParent = resource.getResourceResolver().getResource(writebackConfigResourceCollectionParentPath);
+ if (writebackConfigResourceCollectionParent != null) {
+ resourceCollectionParentProps = writebackConfigResourceCollectionParent.getValueMap();
+ }
+ }
+
+ return new ConfigurationCollectionDataImpl(
+ configName,
+ configData,
+ writebackConfigResourceCollectionParentPath,
+ resourceCollectionParentProps
+ );
}
@SuppressWarnings("unchecked")
@@ -158,23 +176,23 @@ public class ConfigurationManagerImpl im
}
@Override
- public void persist(Resource resource, String configName, Map<String,Object> values) {
+ public void persistConfiguration(Resource resource, String configName, ConfigurationPersistData data) {
String configResourcePath = configurationResourceResolvingStrategy.getResourcePath(resource, CONFIGS_PARENT_NAME, configName);
if (configResourcePath == null) {
throw new ConfigurationPersistenceException("Unable to persist configuration: Configuration resolving strategy returned no path.");
}
- if (!configurationPersistenceStrategy.persist(resource.getResourceResolver(), configResourcePath, values)) {
+ if (!configurationPersistenceStrategy.persist(resource.getResourceResolver(), configResourcePath, data)) {
throw new ConfigurationPersistenceException("Unable to persist configuration: No persistence strategy found.");
}
}
@Override
- public void persistCollection(Resource resource, String configName, Collection<ResourceCollectionItem> resourceCollectionItems) {
+ public void persistConfigurationCollection(Resource resource, String configName, ConfigurationCollectionPersistData data) {
String configResourceParentPath = configurationResourceResolvingStrategy.getResourceCollectionParentPath(resource, CONFIGS_PARENT_NAME, configName);
if (configResourceParentPath == null) {
throw new ConfigurationPersistenceException("Unable to persist configuration collection: Configuration resolving strategy returned no parent path.");
}
- if (!configurationPersistenceStrategy.persistCollection(resource.getResourceResolver(), configResourceParentPath, resourceCollectionItems)) {
+ if (!configurationPersistenceStrategy.persistCollection(resource.getResourceResolver(), configResourceParentPath, data)) {
throw new ConfigurationPersistenceException("Unable to persist configuration: No persistence strategy found.");
}
}
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=1772117&r1=1772116&r2=1772117&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 Wed Nov 30 21:00:11 2016
@@ -18,13 +18,13 @@
*/
package org.apache.sling.caconfig.management.impl;
-import java.util.Collection;
import java.util.Map;
import org.apache.sling.api.resource.Resource;
import org.apache.sling.api.resource.ResourceResolver;
+import org.apache.sling.caconfig.spi.ConfigurationCollectionPersistData;
+import org.apache.sling.caconfig.spi.ConfigurationPersistData;
import org.apache.sling.caconfig.spi.ConfigurationPersistenceStrategy;
-import org.apache.sling.caconfig.spi.ResourceCollectionItem;
import org.apache.sling.commons.osgi.Order;
import org.apache.sling.commons.osgi.RankedServices;
import org.osgi.service.component.annotations.Component;
@@ -85,9 +85,10 @@ public class ConfigurationPersistenceStr
* Persist configuration data with the first implementation that accepts it.
*/
@Override
- public boolean persist(ResourceResolver resourceResolver, String configResourcePath, Map<String,Object> properties) {
+ public boolean persist(ResourceResolver resourceResolver, String configResourcePath,
+ ConfigurationPersistData data) {
for (ConfigurationPersistenceStrategy item : items) {
- if (item.persist(resourceResolver, configResourcePath, properties)) {
+ if (item.persist(resourceResolver, configResourcePath, data)) {
return true;
}
}
@@ -99,9 +100,9 @@ public class ConfigurationPersistenceStr
*/
@Override
public boolean persistCollection(ResourceResolver resourceResolver, String configResourceCollectionParentPath,
- Collection<ResourceCollectionItem> resourceCollectionItems) {
+ ConfigurationCollectionPersistData data) {
for (ConfigurationPersistenceStrategy item : items) {
- if (item.persistCollection(resourceResolver, configResourceCollectionParentPath, resourceCollectionItems)) {
+ if (item.persistCollection(resourceResolver, configResourceCollectionParentPath, data)) {
return true;
}
}
Modified: sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/management/impl/console/ConfigurationWebConsolePlugin.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/management/impl/console/ConfigurationWebConsolePlugin.java?rev=1772117&r1=1772116&r2=1772117&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/management/impl/console/ConfigurationWebConsolePlugin.java (original)
+++ sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/management/impl/console/ConfigurationWebConsolePlugin.java Wed Nov 30 21:00:11 2016
@@ -165,10 +165,10 @@ public class ConfigurationWebConsolePlug
// resolve configuration
Collection<ConfigurationData> configDatas;
if (resourceCollection) {
- configDatas = configurationManager.getCollection(contentResource, configName);
+ configDatas = configurationManager.getConfigurationCollection(contentResource, configName).getItems();
}
else {
- ConfigurationData configData = configurationManager.get(contentResource, configName);
+ ConfigurationData configData = configurationManager.getConfiguration(contentResource, configName);
if (configData != null) {
configDatas = Collections.singletonList(configData);
}
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=1772117&r1=1772116&r2=1772117&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 Wed Nov 30 21:00:11 2016
@@ -22,12 +22,15 @@ import static org.junit.Assert.assertEqu
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
import org.apache.sling.api.resource.Resource;
import org.apache.sling.api.resource.ValueMap;
+import org.apache.sling.caconfig.spi.ConfigurationCollectionPersistData;
+import org.apache.sling.caconfig.spi.ConfigurationPersistData;
import org.apache.sling.caconfig.spi.ConfigurationPersistenceStrategy;
-import org.apache.sling.caconfig.spi.ResourceCollectionItem;
+import org.apache.sling.hamcrest.ResourceMatchers;
import org.apache.sling.testing.mock.sling.junit.SlingContext;
import org.junit.Rule;
import org.junit.Test;
@@ -65,7 +68,7 @@ public class DefaultConfigurationPersist
// store config data
assertTrue(underTest.persist(context.resourceResolver(), "/conf/test",
- ImmutableMap.<String,Object>of("prop1", "value1", "prop2", 5)));
+ new ConfigurationPersistData(ImmutableMap.<String,Object>of("prop1", "value1", "prop2", 5))));
context.resourceResolver().commit();
ValueMap props = context.resourceResolver().getResource("/conf/test").getValueMap();
@@ -73,7 +76,8 @@ public class DefaultConfigurationPersist
assertEquals((Integer)5, props.get("prop2", Integer.class));
// remove config data
- assertTrue(underTest.persist(context.resourceResolver(), "/conf/test", ImmutableMap.<String,Object>of()));
+ assertTrue(underTest.persist(context.resourceResolver(), "/conf/test",
+ new ConfigurationPersistData(ImmutableMap.<String,Object>of())));
context.resourceResolver().commit();
props = context.resourceResolver().getResource("/conf/test").getValueMap();
@@ -87,10 +91,12 @@ public class DefaultConfigurationPersist
ConfigurationPersistenceStrategy underTest = context.registerInjectActivateService(new DefaultConfigurationPersistenceStrategy());
// store new config collection items
- assertTrue(underTest.persistCollection(context.resourceResolver(), "/conf/test", ImmutableList.of(
- new ResourceCollectionItem("0", ImmutableMap.<String,Object>of("prop1", "value1")),
- new ResourceCollectionItem("1", ImmutableMap.<String,Object>of("prop2", 5))
- )));
+ assertTrue(underTest.persistCollection(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");
@@ -99,9 +105,14 @@ public class DefaultConfigurationPersist
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.persistCollection(context.resourceResolver(), "/conf/test", ImmutableList.<ResourceCollectionItem>of()));
+ assertTrue(underTest.persistCollection(context.resourceResolver(), "/conf/test",
+ new ConfigurationCollectionPersistData(ImmutableList.<ConfigurationPersistData>of())));
context.resourceResolver().commit();
resource = context.resourceResolver().getResource("/conf/test");
@@ -117,8 +128,10 @@ public class DefaultConfigurationPersist
assertNull(underTest.getResource(resource));
assertNull(underTest.getResourcePath(resource.getPath()));
- assertFalse(underTest.persist(context.resourceResolver(), "/conf/test", ImmutableMap.<String,Object>of()));
- assertFalse(underTest.persistCollection(context.resourceResolver(), "/conf/test", ImmutableList.<ResourceCollectionItem>of()));
+ assertFalse(underTest.persist(context.resourceResolver(), "/conf/test",
+ new ConfigurationPersistData(ImmutableMap.<String,Object>of())));
+ assertFalse(underTest.persistCollection(context.resourceResolver(), "/conf/test",
+ new ConfigurationCollectionPersistData(ImmutableList.<ConfigurationPersistData>of())));
}
}
Added: sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/management/impl/ConfigurationCollectionDataImplTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/management/impl/ConfigurationCollectionDataImplTest.java?rev=1772117&view=auto
==============================================================================
--- sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/management/impl/ConfigurationCollectionDataImplTest.java (added)
+++ sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/management/impl/ConfigurationCollectionDataImplTest.java Wed Nov 30 21:00:11 2016
@@ -0,0 +1,52 @@
+/*
+ * 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.management.impl;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertSame;
+
+import java.util.Collection;
+import java.util.Map;
+
+import org.apache.sling.caconfig.management.ConfigurationCollectionData;
+import org.apache.sling.caconfig.management.ConfigurationData;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.runners.MockitoJUnitRunner;
+
+@RunWith(MockitoJUnitRunner.class)
+public class ConfigurationCollectionDataImplTest {
+
+ @Mock
+ private Collection<ConfigurationData> items;
+ @Mock
+ private Map<String, Object> props;
+
+ @Test
+ public void testProperties() {
+ ConfigurationCollectionData underTest = new ConfigurationCollectionDataImpl("name1", items, "/path1", props);
+
+ assertEquals("name1", underTest.getConfigName());;
+ assertSame(items, underTest.getItems());
+ assertEquals("/path1", underTest.getResourcePath());
+ assertSame(props, underTest.getProperties());
+ }
+
+}
Propchange: sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/management/impl/ConfigurationCollectionDataImplTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/management/impl/ConfigurationCollectionDataImplTest.java
------------------------------------------------------------------------------
--- svn:keywords (added)
+++ svn:keywords Wed Nov 30 21:00:11 2016
@@ -0,0 +1 @@
+LastChangedDate LastChangedRevision LastChangedBy HeadURL Id Author
Propchange: sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/management/impl/ConfigurationCollectionDataImplTest.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/management/impl/ConfigurationDataImplTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/management/impl/ConfigurationDataImplTest.java?rev=1772117&r1=1772116&r2=1772117&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/management/impl/ConfigurationDataImplTest.java (original)
+++ sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/management/impl/ConfigurationDataImplTest.java Wed Nov 30 21:00:11 2016
@@ -177,8 +177,7 @@ public class ConfigurationDataImplTest {
Resource resource = context.create().resource("/conf/testIgnoreProps",
"prop1", "value1",
"prop4", true,
- "jcr:primaryType", "myType",
- "sling:resourceType", "my/type");
+ "jcr:primaryType", "myType");
ConfigurationData underTest = new ConfigurationDataImpl(null, resource, resource, null,
contextResource, "test", configurationManager, configurationOverrideManager, configurationPersistenceStrategy,
@@ -188,9 +187,6 @@ public class ConfigurationDataImplTest {
assertNull(underTest.getValues().get("jcr:primaryType"));
assertNull(underTest.getEffectiveValues().get("jcr:primaryType"));
-
- assertNull(underTest.getValues().get("sling:resourceType"));
- assertNull(underTest.getEffectiveValues().get("sling:resourceType"));
}
}
Modified: sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/management/impl/ConfigurationManagerImplNoDefaultTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/management/impl/ConfigurationManagerImplNoDefaultTest.java?rev=1772117&r1=1772116&r2=1772117&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/management/impl/ConfigurationManagerImplNoDefaultTest.java (original)
+++ sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/management/impl/ConfigurationManagerImplNoDefaultTest.java Wed Nov 30 21:00:11 2016
@@ -98,7 +98,7 @@ public class ConfigurationManagerImplNoD
@Test
public void testGet_NoConfigResource() {
- ConfigurationData configData = underTest.get(contextResourceNoConfig, CONFIG_NAME);
+ ConfigurationData configData = underTest.getConfiguration(contextResourceNoConfig, CONFIG_NAME);
assertNotNull(configData);
assertEquals(ImmutableSet.of("prop1", "prop2", "prop3"), configData.getPropertyNames());
@@ -113,13 +113,13 @@ public class ConfigurationManagerImplNoD
public void testGet_NoConfigResource_NoConfigMetadata() {
when(configurationMetadataProvider.getConfigurationMetadata(CONFIG_NAME)).thenReturn(null);
- ConfigurationData configData = underTest.get(contextResourceNoConfig, CONFIG_NAME);
+ ConfigurationData configData = underTest.getConfiguration(contextResourceNoConfig, CONFIG_NAME);
assertNull(configData);
}
@Test
public void testGetCollection_NoConfigResources() {
- List<ConfigurationData> configDatas = ImmutableList.copyOf(underTest.getCollection(contextResourceNoConfig, CONFIG_COL_NAME));
+ List<ConfigurationData> configDatas = ImmutableList.copyOf(underTest.getConfigurationCollection(contextResourceNoConfig, CONFIG_COL_NAME).getItems());
assertEquals(0, configDatas.size());
}
@@ -127,7 +127,7 @@ public class ConfigurationManagerImplNoD
public void testGetCollection_NoConfigResources_NoConfigMetadata() {
when(configurationMetadataProvider.getConfigurationMetadata(CONFIG_COL_NAME)).thenReturn(null);
- List<ConfigurationData> configDatas = ImmutableList.copyOf(underTest.getCollection(contextResourceNoConfig, CONFIG_COL_NAME));
+ List<ConfigurationData> configDatas = ImmutableList.copyOf(underTest.getConfigurationCollection(contextResourceNoConfig, CONFIG_COL_NAME).getItems());
assertEquals(0, configDatas.size());
}
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=1772117&r1=1772116&r2=1772117&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 Wed Nov 30 21:00:11 2016
@@ -34,13 +34,17 @@ import java.util.List;
import org.apache.sling.api.resource.Resource;
import org.apache.sling.api.resource.ValueMap;
import org.apache.sling.caconfig.impl.ConfigurationTestUtils;
+import org.apache.sling.caconfig.impl.def.ConfigurationDefNameConstants;
import org.apache.sling.caconfig.impl.metadata.ConfigurationMetadataProviderMultiplexer;
import org.apache.sling.caconfig.impl.override.DummyConfigurationOverrideProvider;
+import org.apache.sling.caconfig.management.ConfigurationCollectionData;
import org.apache.sling.caconfig.management.ConfigurationData;
import org.apache.sling.caconfig.management.ConfigurationManager;
+import org.apache.sling.caconfig.resource.impl.def.ConfigurationResourceNameConstants;
+import org.apache.sling.caconfig.spi.ConfigurationCollectionPersistData;
import org.apache.sling.caconfig.spi.ConfigurationMetadataProvider;
import org.apache.sling.caconfig.spi.ConfigurationOverrideProvider;
-import org.apache.sling.caconfig.spi.ResourceCollectionItem;
+import org.apache.sling.caconfig.spi.ConfigurationPersistData;
import org.apache.sling.caconfig.spi.metadata.ConfigurationMetadata;
import org.apache.sling.caconfig.spi.metadata.PropertyMetadata;
import org.apache.sling.testing.mock.sling.junit.SlingContext;
@@ -181,8 +185,8 @@ public class ConfigurationManagerImplTes
}
@Test
- public void testGet() {
- ConfigurationData configData = underTest.get(contextResource, CONFIG_NAME);
+ public void testGetConfiguration() {
+ ConfigurationData configData = underTest.getConfiguration(contextResource, CONFIG_NAME);
assertNotNull(configData);
assertEquals(ImmutableSet.of("prop1", "prop2", "prop3", "prop4"), configData.getPropertyNames());
@@ -191,11 +195,13 @@ public class ConfigurationManagerImplTes
assertFalse(configData.getValueInfo("prop1").isInherited());
assertFalse(configData.getValueInfo("prop3").isInherited());
+
+ assertFalse(configData.getValues().get(ConfigurationDefNameConstants.PROPERTY_CONFIG_PROPERTY_INHERIT, false));
}
@Test
- public void testGet_WithResourceInheritance() {
- ConfigurationData configData = underTest.get(contextResourceLevel2, CONFIG_NAME);
+ public void testGetConfiguration_WithResourceInheritance() {
+ ConfigurationData configData = underTest.getConfiguration(contextResourceLevel2, CONFIG_NAME);
assertNotNull(configData);
assertEquals(ImmutableSet.of("prop1", "prop2", "prop3", "prop4"), configData.getPropertyNames());
@@ -208,11 +214,13 @@ public class ConfigurationManagerImplTes
assertTrue(configData.getValueInfo("prop1").isInherited());
assertFalse(configData.getValueInfo("prop3").isInherited());
assertNull(configData.getValueInfo("prop3").getConfigSourcePath());
- }
+ assertFalse(configData.getValues().get(ConfigurationDefNameConstants.PROPERTY_CONFIG_PROPERTY_INHERIT, false));
+ }
+
@Test
- public void testGet_WithPropertyInheritance() {
- ConfigurationData configData = underTest.get(contextResourceLevel3, CONFIG_NAME);
+ public void testGetConfiguration_WithPropertyInheritance() {
+ ConfigurationData configData = underTest.getConfiguration(contextResourceLevel3, CONFIG_NAME);
assertNotNull(configData);
assertTrue(configData.getPropertyNames().containsAll(ImmutableSet.of("prop1", "prop2", "prop3", "prop4", "prop5")));
@@ -240,14 +248,16 @@ public class ConfigurationManagerImplTes
assertEquals(configPathLevel3, configData.getValueInfo("prop4").getConfigSourcePath());
assertFalse(configData.getValueInfo("prop5").isInherited());
assertEquals(configPathLevel3, configData.getValueInfo("prop5").getConfigSourcePath());
+
+ assertTrue(configData.getValues().get(ConfigurationDefNameConstants.PROPERTY_CONFIG_PROPERTY_INHERIT, false));
}
@Test
- public void testGet_WithOverride() {
+ public void testGetConfiguration_WithOverride() {
context.registerService(ConfigurationOverrideProvider.class, new DummyConfigurationOverrideProvider(
"[/content]" + CONFIG_NAME + "={prop1='override1'}"));
- ConfigurationData configData = underTest.get(contextResource, CONFIG_NAME);
+ ConfigurationData configData = underTest.getConfiguration(contextResource, CONFIG_NAME);
assertNotNull(configData);
assertEquals(ImmutableSet.of("prop1", "prop2", "prop3"), configData.getPropertyNames());
@@ -262,8 +272,8 @@ public class ConfigurationManagerImplTes
}
@Test
- public void testGet_NoConfigResource() {
- ConfigurationData configData = underTest.get(contextResourceNoConfig, CONFIG_NAME);
+ public void testGetConfiguration_NoConfigResource() {
+ ConfigurationData configData = underTest.getConfiguration(contextResourceNoConfig, CONFIG_NAME);
assertNotNull(configData);
assertEquals(ImmutableSet.of("prop1", "prop2", "prop3"), configData.getPropertyNames());
@@ -275,10 +285,10 @@ public class ConfigurationManagerImplTes
}
@Test
- public void testGet_NoConfigMetadata() {
+ public void testGetConfiguration_NoConfigMetadata() {
when(configurationMetadataProvider.getConfigurationMetadata(CONFIG_NAME)).thenReturn(null);
- ConfigurationData configData = underTest.get(contextResource, CONFIG_NAME);
+ ConfigurationData configData = underTest.getConfiguration(contextResource, CONFIG_NAME);
assertNotNull(configData);
assertEquals(ImmutableSet.of("prop1", "prop4"), configData.getPropertyNames());
@@ -290,16 +300,17 @@ public class ConfigurationManagerImplTes
}
@Test
- public void testGet_NoConfigResource_NoConfigMetadata() {
+ public void testGetConfiguration_NoConfigResource_NoConfigMetadata() {
when(configurationMetadataProvider.getConfigurationMetadata(CONFIG_NAME)).thenReturn(null);
- ConfigurationData configData = underTest.get(contextResourceNoConfig, CONFIG_NAME);
+ ConfigurationData configData = underTest.getConfiguration(contextResourceNoConfig, CONFIG_NAME);
assertNull(configData);
}
@Test
- public void testGetCollection() {
- List<ConfigurationData> configDatas = ImmutableList.copyOf(underTest.getCollection(contextResource, CONFIG_COL_NAME));
+ public void testGetConfigurationCollection() {
+ ConfigurationCollectionData configCollectionData = underTest.getConfigurationCollection(contextResource, CONFIG_COL_NAME);
+ List<ConfigurationData> configDatas = ImmutableList.copyOf(configCollectionData.getItems());
assertEquals(2, configDatas.size());
ConfigurationData configData1 = configDatas.get(0);
@@ -319,11 +330,14 @@ public class ConfigurationManagerImplTes
assertFalse(configData2.getValueInfo("prop1").isInherited());
assertFalse(configData2.getValueInfo("prop3").isInherited());
+
+ assertNull(configCollectionData.getProperties().get(ConfigurationResourceNameConstants.PROPERTY_CONFIG_COLLECTION_INHERIT));
}
@Test
- public void testGetCollection_WithResourceCollectionInheritance() {
- List<ConfigurationData> configDatas = ImmutableList.copyOf(underTest.getCollection(contextResourceLevel2, CONFIG_COL_NAME));
+ public void testGetConfigurationCollection_WithResourceCollectionInheritance() {
+ ConfigurationCollectionData configCollectionData = underTest.getConfigurationCollection(contextResourceLevel2, CONFIG_COL_NAME);
+ List<ConfigurationData> configDatas = ImmutableList.copyOf(configCollectionData.getItems());
assertEquals(2, configDatas.size());
ConfigurationData configData1 = configDatas.get(0);
@@ -348,11 +362,14 @@ public class ConfigurationManagerImplTes
assertEquals(configPath2, configData2.getValueInfo("prop4").getConfigSourcePath());
assertFalse(configData2.getValueInfo("prop3").isInherited());
assertNull(configData2.getValueInfo("prop3").getConfigSourcePath());
+
+ assertTrue((Boolean)configCollectionData.getProperties().get(ConfigurationResourceNameConstants.PROPERTY_CONFIG_COLLECTION_INHERIT));
}
@Test
- public void testGetCollection_WithResourceCollectionAndPropertyInheritance() {
- List<ConfigurationData> configDatas = ImmutableList.copyOf(underTest.getCollection(contextResourceLevel3, CONFIG_COL_NAME));
+ public void testGetConfigurationCollection_WithResourceCollectionAndPropertyInheritance() {
+ ConfigurationCollectionData configCollectionData = underTest.getConfigurationCollection(contextResourceLevel3, CONFIG_COL_NAME);
+ List<ConfigurationData> configDatas = ImmutableList.copyOf(configCollectionData.getItems());
assertEquals(2, configDatas.size());
ConfigurationData configData1 = configDatas.get(0);
@@ -394,14 +411,17 @@ public class ConfigurationManagerImplTes
assertEquals(configPath2, configData2.getValueInfo("prop4").getConfigSourcePath());
assertFalse(configData2.getValueInfo("prop3").isInherited());
assertNull(configData2.getValueInfo("prop3").getConfigSourcePath());
+
+ assertTrue((Boolean)configCollectionData.getProperties().get(ConfigurationResourceNameConstants.PROPERTY_CONFIG_COLLECTION_INHERIT));
+ assertTrue(configData1.getValues().get(ConfigurationDefNameConstants.PROPERTY_CONFIG_PROPERTY_INHERIT, false));
}
@Test
- public void testGetCollection_WithOverride() {
+ public void testGetConfigurationCollection_WithOverride() {
context.registerService(ConfigurationOverrideProvider.class, new DummyConfigurationOverrideProvider(
"[/content]" + CONFIG_COL_NAME + "/prop1='override1'"));
- List<ConfigurationData> configDatas = ImmutableList.copyOf(underTest.getCollection(contextResource, CONFIG_COL_NAME));
+ List<ConfigurationData> configDatas = ImmutableList.copyOf(underTest.getConfigurationCollection(contextResource, CONFIG_COL_NAME).getItems());
assertEquals(2, configDatas.size());
ConfigurationData configData1 = configDatas.get(0);
@@ -428,16 +448,16 @@ public class ConfigurationManagerImplTes
}
@Test
- public void testGetCollection_NoConfigResources() {
- List<ConfigurationData> configDatas = ImmutableList.copyOf(underTest.getCollection(contextResourceNoConfig, CONFIG_COL_NAME));
+ public void testGetConfigurationCollection_NoConfigResources() {
+ List<ConfigurationData> configDatas = ImmutableList.copyOf(underTest.getConfigurationCollection(contextResourceNoConfig, CONFIG_COL_NAME).getItems());
assertEquals(0, configDatas.size());
}
@Test
- public void testGetCollection_NoConfigMetadata() {
+ public void testGetConfigurationCollection_NoConfigMetadata() {
when(configurationMetadataProvider.getConfigurationMetadata(CONFIG_COL_NAME)).thenReturn(null);
- List<ConfigurationData> configDatas = ImmutableList.copyOf(underTest.getCollection(contextResource, CONFIG_COL_NAME));
+ List<ConfigurationData> configDatas = ImmutableList.copyOf(underTest.getConfigurationCollection(contextResource, CONFIG_COL_NAME).getItems());
assertEquals(2, configDatas.size());
ConfigurationData configData1 = configDatas.get(0);
@@ -458,17 +478,17 @@ public class ConfigurationManagerImplTes
}
@Test
- public void testGetCollection_NoConfigResources_NoConfigMetadata() {
+ public void testGetConfigurationCollection_NoConfigResources_NoConfigMetadata() {
when(configurationMetadataProvider.getConfigurationMetadata(CONFIG_COL_NAME)).thenReturn(null);
- List<ConfigurationData> configDatas = ImmutableList.copyOf(underTest.getCollection(contextResourceNoConfig, CONFIG_COL_NAME));
+ List<ConfigurationData> configDatas = ImmutableList.copyOf(underTest.getConfigurationCollection(contextResourceNoConfig, CONFIG_COL_NAME).getItems());
assertEquals(0, configDatas.size());
}
@Test
- public void testPersist() throws Exception {
- underTest.persist(contextResourceNoConfig, CONFIG_NAME,
- ImmutableMap.<String, Object>of("prop1", "value1"));
+ public void testPersistConfiguration() throws Exception {
+ underTest.persistConfiguration(contextResourceNoConfig, CONFIG_NAME,
+ new ConfigurationPersistData(ImmutableMap.<String, Object>of("prop1", "value1")));
context.resourceResolver().commit();
String configPath = getConfigPropsPath("/conf/testNoConfig/" + CONFIGS_PARENT_NAME + "/" + CONFIG_NAME);
@@ -477,10 +497,11 @@ public class ConfigurationManagerImplTes
}
@Test
- public void testPersistCollection() throws Exception {
- underTest.persistCollection(contextResourceNoConfig, CONFIG_COL_NAME, ImmutableList.of(
- new ResourceCollectionItem("0", ImmutableMap.<String, Object>of("prop1", "value1")),
- new ResourceCollectionItem("1", ImmutableMap.<String, Object>of("prop2", 5))
+ public void testPersistConfigurationCollection() throws Exception {
+ underTest.persistConfigurationCollection(contextResourceNoConfig, CONFIG_COL_NAME,
+ new ConfigurationCollectionPersistData(ImmutableList.of(
+ new ConfigurationPersistData(ImmutableMap.<String, Object>of("prop1", "value1")).collectionItemName("0"),
+ new ConfigurationPersistData(ImmutableMap.<String, Object>of("prop2", 5)).collectionItemName("1"))
));
context.resourceResolver().commit();
@@ -509,18 +530,18 @@ public class ConfigurationManagerImplTes
}
@Test
- public void testGetConfigurationNames() {
+ public void testGetConfigurationConfigurationNames() {
assertEquals(ImmutableSortedSet.of(CONFIG_NAME, CONFIG_COL_NAME, CONFIG_NESTED_NAME), underTest.getConfigurationNames());
}
@Test
- public void testGetConfigurationMetadata() {
+ public void testGetConfigurationConfigurationMetadata() {
assertEquals(CONFIG_NAME, underTest.getConfigurationMetadata(CONFIG_NAME).getName());
}
@Test
- public void testGetNested() {
- ConfigurationData configData = underTest.get(contextResource, CONFIG_NESTED_NAME);
+ public void testGetConfigurationNested() {
+ ConfigurationData configData = underTest.getConfiguration(contextResource, CONFIG_NESTED_NAME);
assertNotNull(configData);
assertEquals(ImmutableSet.of("prop1", "propSub", "propSubList", "prop4"), configData.getPropertyNames());
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=1772117&r1=1772116&r2=1772117&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 Wed Nov 30 21:00:11 2016
@@ -24,14 +24,12 @@ import static org.junit.Assert.assertNul
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
-import java.util.Collection;
-import java.util.Map;
-
import org.apache.sling.api.resource.Resource;
import org.apache.sling.api.resource.ResourceResolver;
import org.apache.sling.caconfig.impl.def.DefaultConfigurationPersistenceStrategy;
+import org.apache.sling.caconfig.spi.ConfigurationCollectionPersistData;
+import org.apache.sling.caconfig.spi.ConfigurationPersistData;
import org.apache.sling.caconfig.spi.ConfigurationPersistenceStrategy;
-import org.apache.sling.caconfig.spi.ResourceCollectionItem;
import org.apache.sling.testing.mock.sling.junit.SlingContext;
import org.junit.Before;
import org.junit.Rule;
@@ -61,10 +59,11 @@ public class ConfigurationPersistenceStr
public void testWithNoStrategies() {
assertNull(underTest.getResource(resource1));
assertNull(underTest.getResourcePath(resource1.getPath()));
- assertFalse(underTest.persist(context.resourceResolver(), "/conf/test1", resource1.getValueMap()));
- assertFalse(underTest.persistCollection(context.resourceResolver(), "/conf/testCol", ImmutableList.of(
- new ResourceCollectionItem(resource1.getName(), resource1.getValueMap()),
- new ResourceCollectionItem(resource2.getName(), resource2.getValueMap()))));
+ assertFalse(underTest.persist(context.resourceResolver(), "/conf/test1", new ConfigurationPersistData(resource1.getValueMap())));
+ assertFalse(underTest.persistCollection(context.resourceResolver(), "/conf/testCol",
+ new ConfigurationCollectionPersistData(ImmutableList.of(
+ new ConfigurationPersistData(resource1.getValueMap()).collectionItemName(resource1.getName()),
+ new ConfigurationPersistData(resource2.getValueMap()).collectionItemName(resource2.getName())))));
}
@Test
@@ -73,10 +72,11 @@ public class ConfigurationPersistenceStr
assertSame(resource1, underTest.getResource(resource1));
assertEquals(resource1.getPath(), underTest.getResourcePath(resource1.getPath()));
- assertTrue(underTest.persist(context.resourceResolver(), "/conf/test1", resource1.getValueMap()));
- assertTrue(underTest.persistCollection(context.resourceResolver(), "/conf/testCol", ImmutableList.of(
- new ResourceCollectionItem(resource1.getName(), resource1.getValueMap()),
- new ResourceCollectionItem(resource2.getName(), resource2.getValueMap()))));
+ assertTrue(underTest.persist(context.resourceResolver(), "/conf/test1", new ConfigurationPersistData(resource1.getValueMap())));
+ assertTrue(underTest.persistCollection(context.resourceResolver(), "/conf/testCol",
+ new ConfigurationCollectionPersistData(ImmutableList.of(
+ new ConfigurationPersistData(resource1.getValueMap()).collectionItemName(resource1.getName()),
+ new ConfigurationPersistData(resource2.getValueMap()).collectionItemName(resource2.getName())))));
}
@Test
@@ -93,12 +93,13 @@ public class ConfigurationPersistenceStr
return resource2.getPath();
}
@Override
- public boolean persist(ResourceResolver resourceResolver, String configResourcePath, Map<String,Object> properties) {
+ public boolean persist(ResourceResolver resourceResolver, String configResourcePath,
+ ConfigurationPersistData data) {
return true;
}
@Override
- public boolean persistCollection(ResourceResolver resourceResolver, String configResourceCollectionParentPath,
- Collection<ResourceCollectionItem> resourceCollectionItems) {
+ public boolean persistCollection(ResourceResolver resourceResolver,
+ String configResourceCollectionParentPath, ConfigurationCollectionPersistData data) {
return false;
}
}, Constants.SERVICE_RANKING, 2000);
@@ -114,12 +115,13 @@ public class ConfigurationPersistenceStr
return resource1.getPath();
}
@Override
- public boolean persist(ResourceResolver resourceResolver, String configResourcePath, Map<String,Object> properties) {
+ public boolean persist(ResourceResolver resourceResolver, String configResourcePath,
+ ConfigurationPersistData data) {
return false;
}
@Override
- public boolean persistCollection(ResourceResolver resourceResolver, String configResourceCollectionParentPath,
- Collection<ResourceCollectionItem> resourceCollectionItems) {
+ public boolean persistCollection(ResourceResolver resourceResolver,
+ String configResourceCollectionParentPath, ConfigurationCollectionPersistData data) {
return true;
}
@@ -127,10 +129,11 @@ public class ConfigurationPersistenceStr
assertSame(resource2, underTest.getResource(resource1));
assertEquals(resource2.getPath(), underTest.getResourcePath(resource1.getPath()));
- assertTrue(underTest.persist(context.resourceResolver(), "/conf/test1", resource1.getValueMap()));
- assertTrue(underTest.persistCollection(context.resourceResolver(), "/conf/testCol", ImmutableList.of(
- new ResourceCollectionItem(resource1.getName(), resource1.getValueMap()),
- new ResourceCollectionItem(resource2.getName(), resource2.getValueMap()))));
+ assertTrue(underTest.persist(context.resourceResolver(), "/conf/test1", new ConfigurationPersistData(resource1.getValueMap())));
+ assertTrue(underTest.persistCollection(context.resourceResolver(), "/conf/testCol",
+ new ConfigurationCollectionPersistData(ImmutableList.of(
+ new ConfigurationPersistData(resource1.getValueMap()).collectionItemName(resource1.getName()),
+ new ConfigurationPersistData(resource2.getValueMap()).collectionItemName(resource2.getName())))));
}
}
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=1772117&r1=1772116&r2=1772117&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 Wed Nov 30 21:00:11 2016
@@ -18,7 +18,6 @@
*/
package org.apache.sling.caconfig.management.impl;
-import java.util.Collection;
import java.util.HashSet;
import java.util.Map;
@@ -30,9 +29,10 @@ import org.apache.sling.api.resource.Res
import org.apache.sling.api.resource.ResourceResolver;
import org.apache.sling.api.resource.ResourceUtil;
import org.apache.sling.api.resource.ValueMap;
+import org.apache.sling.caconfig.spi.ConfigurationCollectionPersistData;
+import org.apache.sling.caconfig.spi.ConfigurationPersistData;
import org.apache.sling.caconfig.spi.ConfigurationPersistenceException;
import org.apache.sling.caconfig.spi.ConfigurationPersistenceStrategy;
-import org.apache.sling.caconfig.spi.ResourceCollectionItem;
/**
* This is a variant of {@link org.apache.sling.caconfig.impl.def.DefaultConfigurationPersistenceStrategy}
@@ -55,20 +55,29 @@ public class CustomConfigurationPersiste
}
@Override
- public boolean persist(ResourceResolver resourceResolver, String configResourcePath, Map<String,Object> properties) {
- getOrCreateResource(resourceResolver, configResourcePath + "/" + CHILD_NODE_NAME, properties);
+ public boolean persist(ResourceResolver resourceResolver, String configResourcePath,
+ ConfigurationPersistData data) {
+ getOrCreateResource(resourceResolver, configResourcePath + "/" + CHILD_NODE_NAME, data.getProperties());
return true;
}
@Override
public boolean persistCollection(ResourceResolver resourceResolver, String configResourceCollectionParentPath,
- Collection<ResourceCollectionItem> resourceCollectionItems) {
+ ConfigurationCollectionPersistData data) {
Resource configResourceParent = getOrCreateResource(resourceResolver, configResourceCollectionParentPath, ValueMap.EMPTY);
+
+ // delete existing children and create new ones
deleteChildren(configResourceParent);
- for (ResourceCollectionItem item : resourceCollectionItems) {
+ for (ConfigurationPersistData item : data.getItems()) {
String path = configResourceParent.getPath() + "/" + item.getCollectionItemName() + "/" + CHILD_NODE_NAME;
- getOrCreateResource(resourceResolver, path, item.getValues());
+ getOrCreateResource(resourceResolver, path, item.getProperties());
}
+
+ // if resource collection parent properties are given replace them as well
+ if (data.getProperties() != null) {
+ replaceProperties(configResourceParent, data.getProperties());
+ }
+
return true;
}
@@ -97,9 +106,9 @@ public class CustomConfigurationPersiste
private void replaceProperties(Resource resource, Map<String,Object> properties) {
ModifiableValueMap modValueMap = resource.adaptTo(ModifiableValueMap.class);
- // remove all existing properties that do not have jcr: or sling: namespace
+ // remove all existing properties that do not have jcr: namespace
for (String propertyName : new HashSet<>(modValueMap.keySet())) {
- if (StringUtils.startsWith(propertyName, "jcr:") || StringUtils.startsWith(propertyName, "sling:")) {
+ if (StringUtils.startsWith(propertyName, "jcr:")) {
continue;
}
modValueMap.remove(propertyName);
Modified: sling/trunk/contrib/extensions/contextaware-config/integration-tests/src/test/java/org/apache/sling/caconfig/it/ConfigurationManagerIT.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/contextaware-config/integration-tests/src/test/java/org/apache/sling/caconfig/it/ConfigurationManagerIT.java?rev=1772117&r1=1772116&r2=1772117&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/contextaware-config/integration-tests/src/test/java/org/apache/sling/caconfig/it/ConfigurationManagerIT.java (original)
+++ sling/trunk/contrib/extensions/contextaware-config/integration-tests/src/test/java/org/apache/sling/caconfig/it/ConfigurationManagerIT.java Wed Nov 30 21:00:11 2016
@@ -38,7 +38,8 @@ import org.apache.sling.caconfig.Configu
import org.apache.sling.caconfig.it.example.SimpleConfig;
import org.apache.sling.caconfig.management.ConfigurationData;
import org.apache.sling.caconfig.management.ConfigurationManager;
-import org.apache.sling.caconfig.spi.ResourceCollectionItem;
+import org.apache.sling.caconfig.spi.ConfigurationCollectionPersistData;
+import org.apache.sling.caconfig.spi.ConfigurationPersistData;
import org.apache.sling.junit.rules.TeleporterRule;
import org.apache.sling.resourcebuilder.api.ResourceBuilder;
import org.apache.sling.resourcebuilder.api.ResourceBuilderFactory;
@@ -82,7 +83,7 @@ public class ConfigurationManagerIT {
@Test
public void testNonExistingConfig() throws Exception {
- ConfigurationData config = configManager.get(resourcePage1, CONFIG_NAME);
+ ConfigurationData config = configManager.getConfiguration(resourcePage1, CONFIG_NAME);
assertNotNull(config);
ValueMap props = config.getEffectiveValues();
@@ -99,7 +100,7 @@ public class ConfigurationManagerIT {
"intParam", 123,
"boolParam", true);
- ConfigurationData config = configManager.get(resourcePage1, CONFIG_NAME);
+ ConfigurationData config = configManager.getConfiguration(resourcePage1, CONFIG_NAME);
assertNotNull(config);
ValueMap props = config.getEffectiveValues();
@@ -117,7 +118,7 @@ public class ConfigurationManagerIT {
values.put("stringParamDefault", "valueB");
values.put("intParam", 55);
values.put("boolParam", true);
- configManager.persist(resourcePage1, CONFIG_NAME, values);
+ configManager.persistConfiguration(resourcePage1, CONFIG_NAME, new ConfigurationPersistData(values));
resourceResolver.commit();
// read config via configuration resolver
@@ -139,10 +140,10 @@ public class ConfigurationManagerIT {
Map<String,Object> values2 = new HashMap<>();
values2.put("intParam", 55);
values2.put("boolParam", true);
- List<ResourceCollectionItem> items = new ArrayList<>();
- items.add(new ResourceCollectionItem("item1", values1));
- items.add(new ResourceCollectionItem("item2", values2));
- configManager.persistCollection(resourcePage1, CONFIG_NAME, items);
+ 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
Added: sling/trunk/contrib/extensions/contextaware-config/spi/src/main/java/org/apache/sling/caconfig/spi/ConfigurationCollectionPersistData.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/contextaware-config/spi/src/main/java/org/apache/sling/caconfig/spi/ConfigurationCollectionPersistData.java?rev=1772117&view=auto
==============================================================================
--- sling/trunk/contrib/extensions/contextaware-config/spi/src/main/java/org/apache/sling/caconfig/spi/ConfigurationCollectionPersistData.java (added)
+++ sling/trunk/contrib/extensions/contextaware-config/spi/src/main/java/org/apache/sling/caconfig/spi/ConfigurationCollectionPersistData.java Wed Nov 30 21:00:11 2016
@@ -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;
+ }
+
+}
Propchange: sling/trunk/contrib/extensions/contextaware-config/spi/src/main/java/org/apache/sling/caconfig/spi/ConfigurationCollectionPersistData.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: sling/trunk/contrib/extensions/contextaware-config/spi/src/main/java/org/apache/sling/caconfig/spi/ConfigurationCollectionPersistData.java
------------------------------------------------------------------------------
--- svn:keywords (added)
+++ svn:keywords Wed Nov 30 21:00:11 2016
@@ -0,0 +1 @@
+LastChangedDate LastChangedRevision LastChangedBy HeadURL Id Author
Propchange: sling/trunk/contrib/extensions/contextaware-config/spi/src/main/java/org/apache/sling/caconfig/spi/ConfigurationCollectionPersistData.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: sling/trunk/contrib/extensions/contextaware-config/spi/src/main/java/org/apache/sling/caconfig/spi/ConfigurationPersistData.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/contextaware-config/spi/src/main/java/org/apache/sling/caconfig/spi/ConfigurationPersistData.java?rev=1772117&view=auto
==============================================================================
--- sling/trunk/contrib/extensions/contextaware-config/spi/src/main/java/org/apache/sling/caconfig/spi/ConfigurationPersistData.java (added)
+++ sling/trunk/contrib/extensions/contextaware-config/spi/src/main/java/org/apache/sling/caconfig/spi/ConfigurationPersistData.java Wed Nov 30 21:00:11 2016
@@ -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.Map;
+
+import javax.annotation.CheckForNull;
+import javax.annotation.Nonnull;
+
+import org.osgi.annotation.versioning.ProviderType;
+
+/**
+ * Data for persisting configuration properties.
+ */
+@ProviderType
+public final class ConfigurationPersistData {
+
+ private final Map<String,Object> properties;
+ private String collectionItemName;
+
+ /**
+ * @param collectionItemName Resource collection item name
+ * @param properties Property values
+ */
+ public ConfigurationPersistData(@Nonnull Map<String, Object> properties) {
+ this.properties = properties;
+ }
+
+ /**
+ * @return Property values
+ */
+ public @Nonnull Map<String, Object> getProperties() {
+ return properties;
+ }
+
+ /**
+ * @return Resource collection item name. To be set only for resource collection items.
+ */
+ public @CheckForNull String getCollectionItemName() {
+ return collectionItemName;
+ }
+
+ /**
+ * @param collectionItemName Resource collection item name. To be set only for resource collection items.
+ * @return this
+ */
+ public ConfigurationPersistData collectionItemName(String value) {
+ this.collectionItemName = value;
+ return this;
+ }
+
+}
Propchange: sling/trunk/contrib/extensions/contextaware-config/spi/src/main/java/org/apache/sling/caconfig/spi/ConfigurationPersistData.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: sling/trunk/contrib/extensions/contextaware-config/spi/src/main/java/org/apache/sling/caconfig/spi/ConfigurationPersistData.java
------------------------------------------------------------------------------
--- svn:keywords (added)
+++ svn:keywords Wed Nov 30 21:00:11 2016
@@ -0,0 +1 @@
+LastChangedDate LastChangedRevision LastChangedBy HeadURL Id Author
Propchange: sling/trunk/contrib/extensions/contextaware-config/spi/src/main/java/org/apache/sling/caconfig/spi/ConfigurationPersistData.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
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=1772117&r1=1772116&r2=1772117&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 Wed Nov 30 21:00:11 2016
@@ -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 ConfigurationPersistenc
* (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 ConfigurationPersistenc
* (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);
}