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 2018/04/27 21:47:58 UTC
[sling-org-apache-sling-caconfig-impl] branch master updated:
SLING-7627 CAConfig Impl: Wrong config name when adapting
ConfigurationBuilder multiple times from same resource
This is an automated email from the ASF dual-hosted git repository.
sseifert pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-caconfig-impl.git
The following commit(s) were added to refs/heads/master by this push:
new d4bb850 SLING-7627 CAConfig Impl: Wrong config name when adapting ConfigurationBuilder multiple times from same resource
d4bb850 is described below
commit d4bb850a3adb91369c2bf8c9b1552ec099733225
Author: sseifert <ss...@pro-vision.de>
AuthorDate: Fri Apr 27 23:47:50 2018 +0200
SLING-7627 CAConfig Impl: Wrong config name when adapting ConfigurationBuilder multiple times from same resource
---
.../caconfig/impl/ConfigurationBuilderImpl.java | 30 ++++++++++++++++++----
.../ConfigurationResolverAnnotationClassTest.java | 17 ++++++++++++
2 files changed, 42 insertions(+), 5 deletions(-)
diff --git a/src/main/java/org/apache/sling/caconfig/impl/ConfigurationBuilderImpl.java b/src/main/java/org/apache/sling/caconfig/impl/ConfigurationBuilderImpl.java
index 8acb8ee..5534e6c 100644
--- a/src/main/java/org/apache/sling/caconfig/impl/ConfigurationBuilderImpl.java
+++ b/src/main/java/org/apache/sling/caconfig/impl/ConfigurationBuilderImpl.java
@@ -62,8 +62,7 @@ class ConfigurationBuilderImpl implements ConfigurationBuilder {
private final ConfigurationOverrideMultiplexer configurationOverrideMultiplexer;
private final ConfigurationMetadataProvider configurationMetadataProvider;
private final Collection<String> configBucketNames;
-
- private String configName;
+ private final String configName;
private static final Logger log = LoggerFactory.getLogger(ConfigurationBuilderImpl.class);
@@ -75,6 +74,19 @@ class ConfigurationBuilderImpl implements ConfigurationBuilder {
final ConfigurationOverrideMultiplexer configurationOverrideMultiplexer,
final ConfigurationMetadataProvider configurationMetadataProvider,
final Collection<String> configBucketNames) {
+ this(resource, configurationResolver, configurationResourceResolvingStrategy, configurationPersistenceStrategy,
+ configurationInheritanceStrategy, configurationOverrideMultiplexer, configurationMetadataProvider, configBucketNames, null);
+ }
+
+ private ConfigurationBuilderImpl(final Resource resource,
+ final ConfigurationResolver configurationResolver,
+ final ConfigurationResourceResolvingStrategy configurationResourceResolvingStrategy,
+ final ConfigurationPersistenceStrategyMultiplexer configurationPersistenceStrategy,
+ final ConfigurationInheritanceStrategy configurationInheritanceStrategy,
+ final ConfigurationOverrideMultiplexer configurationOverrideMultiplexer,
+ final ConfigurationMetadataProvider configurationMetadataProvider,
+ final Collection<String> configBucketNames,
+ final String configName) {
this.contentResource = resource;
this.configurationResolver = configurationResolver;
this.configurationResourceResolvingStrategy = configurationResourceResolvingStrategy;
@@ -83,13 +95,21 @@ class ConfigurationBuilderImpl implements ConfigurationBuilder {
this.configurationOverrideMultiplexer = configurationOverrideMultiplexer;
this.configurationMetadataProvider = configurationMetadataProvider;
this.configBucketNames = configBucketNames;
+ this.configName = configName;
}
@Override
- public ConfigurationBuilder name(String configName) {
+ public ConfigurationBuilder name(final String configName) {
ConfigNameUtil.ensureValidConfigName(configName);
- this.configName = configName;
- return this;
+ return new ConfigurationBuilderImpl(contentResource,
+ configurationResolver,
+ configurationResourceResolvingStrategy,
+ configurationPersistenceStrategy,
+ configurationInheritanceStrategy,
+ configurationOverrideMultiplexer,
+ configurationMetadataProvider,
+ configBucketNames,
+ configName);
}
/**
diff --git a/src/test/java/org/apache/sling/caconfig/impl/ConfigurationResolverAnnotationClassTest.java b/src/test/java/org/apache/sling/caconfig/impl/ConfigurationResolverAnnotationClassTest.java
index 690d396..15221a0 100644
--- a/src/test/java/org/apache/sling/caconfig/impl/ConfigurationResolverAnnotationClassTest.java
+++ b/src/test/java/org/apache/sling/caconfig/impl/ConfigurationResolverAnnotationClassTest.java
@@ -32,6 +32,7 @@ import java.util.Iterator;
import java.util.List;
import org.apache.sling.api.resource.Resource;
+import org.apache.sling.caconfig.ConfigurationBuilder;
import org.apache.sling.caconfig.ConfigurationResolveException;
import org.apache.sling.caconfig.ConfigurationResolver;
import org.apache.sling.caconfig.example.ListConfig;
@@ -61,6 +62,7 @@ public class ConfigurationResolverAnnotationClassTest {
@Before
public void setUp() {
underTest = ConfigurationTestUtils.registerConfigurationResolver(context);
+ context.registerInjectActivateService(new ConfigurationBuilderAdapterFactory());
// content resources
context.build().resource("/content/site1", PROPERTY_CONFIG_REF, "/conf/content/site1");
@@ -332,4 +334,19 @@ public class ConfigurationResolverAnnotationClassTest {
assertTrue(cfgList.isEmpty());
}
+ @Test
+ public void testConfigAdaptMultipleTimes() {
+ context.build().resource("/conf/content/site1/sling:configs/org.apache.sling.caconfig.example.SimpleConfig",
+ "stringParam", "configValue1");
+ context.build().resource("/conf/content/site1/sling:configs/config2",
+ "stringParam", "configValue2");
+
+ SimpleConfig cfg2 = site1Page1.adaptTo(ConfigurationBuilder.class).name("config2").as(SimpleConfig.class);
+ assertEquals("configValue2", cfg2.stringParam());
+
+ // make sure the config name from first call is not cached in the ConfigurationBuilder instance
+ SimpleConfig cfg = site1Page1.adaptTo(ConfigurationBuilder.class).as(SimpleConfig.class);
+ assertEquals("configValue1", cfg.stringParam());
+ }
+
}
--
To stop receiving notification emails like this one, please contact
sseifert@apache.org.