Changes requested by Carsten’s Code Review or PR 15
diff --git a/pom.xml b/pom.xml
index 744001f..970114c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -63,32 +63,6 @@
</execution>
</executions>
</plugin>
-<!--
- <plugin>
- <groupId>org.apache.felix</groupId>
- <artifactId>maven-bundle-plugin</artifactId>
- <extensions>true</extensions>
- <configuration>
- <instructions>
- <Import-Package>
- javax.jcr;resolution:=optional,
- *
- </Import-Package>
- <!- - Check if that is still needed - ->
- <Export-Package>
- org.apache.sling.resourceresolver.impl.mapping
- </Export-Package>
- <Provide-Capability>
- osgi.service;objectClass=javax.servlet.Servlet,
- osgi.service;objectClass=org.apache.sling.api.resource.ResourceResolverFactory,
- osgi.service;objectClass=org.apache.sling.api.resource.observation.ResourceChangeListener,
- osgi.service;objectClass=org.apache.sling.api.resource.runtime.RuntimeService,
- osgi.service;objectClass=org.apache.sling.spi.resource.provider.ResourceProvider
- </Provide-Capability>
- </instructions>
- </configuration>
- </plugin>
--->
<plugin>
<groupId>biz.aQute.bnd</groupId>
<artifactId>bnd-maven-plugin</artifactId>
diff --git a/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverFactoryActivator.java b/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverFactoryActivator.java
index 2b42531..c419f1e 100644
--- a/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverFactoryActivator.java
+++ b/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverFactoryActivator.java
@@ -109,18 +109,9 @@
@Reference
EventAdmin eventAdmin;
- /** Event admin. */
+ /** String Interpolation Provider. */
@Reference
StringInterpolationProvider stringInterpolationProvider;
-// public void bindStringInterpolationProviderImpl(StringInterpolationProviderImpl stringInterpolationProviderImpl) {
-// logger.info("Bind StringInterpolationProviderImpl: '{}'", stringInterpolationProviderImpl);
-// this.stringInterpolationProviderImpl = stringInterpolationProviderImpl;
-// }
-//
-// public void unbindStringInterpolationProviderImpl(StringInterpolationProviderImpl stringInterpolationProviderImpl) {
-// this.stringInterpolationProviderImpl = null;
-// }
-
/** Service User Mapper */
@Reference
diff --git a/src/main/java/org/apache/sling/resourceresolver/impl/mapping/Interpolator.java b/src/main/java/org/apache/sling/resourceresolver/impl/mapping/Interpolator.java
index 47878bb..afa5147 100755
--- a/src/main/java/org/apache/sling/resourceresolver/impl/mapping/Interpolator.java
+++ b/src/main/java/org/apache/sling/resourceresolver/impl/mapping/Interpolator.java
@@ -34,6 +34,7 @@
public static final String START = "$[";
+ public static final char NAME_SEPARATOR = ':';
public static final char DIRECTIVES_SEPARATOR = ';';
public static final char DIRECTIVES_VALUE_SEPARATOR = '=';
@@ -100,13 +101,15 @@
continue;
}
- String key = result.substring(start + START.length(), index - 1);
- int sep = key.indexOf(':');
+ final String key = result.substring(start + START.length(), index - 1);
+ final int sep = key.indexOf(NAME_SEPARATOR);
if (sep == -1) {
- LOGGER.trace("No ':' found, set it to: '{}'", key);
+ // invalid key
+ start = index;
+ continue;
}
- final String type = key.substring(0, sep < 0 ? 0 : sep);
+ final String type = key.substring(0, sep);
final String postfix = key.substring(sep + 1);
LOGGER.trace("Type: '{}', postfix: '{}'", type, postfix);
@@ -116,7 +119,7 @@
if (dirPos == -1) {
name = postfix;
directives = Collections.emptyMap();
- LOGGER.trace("No Default");
+ LOGGER.trace("No Directives");
} else {
name = postfix.substring(0, dirPos);
directives = new HashMap<>();
diff --git a/src/main/java/org/apache/sling/resourceresolver/impl/mapping/MapEntries.java b/src/main/java/org/apache/sling/resourceresolver/impl/mapping/MapEntries.java
index fa4eaf8..cdc5bcc 100644
--- a/src/main/java/org/apache/sling/resourceresolver/impl/mapping/MapEntries.java
+++ b/src/main/java/org/apache/sling/resourceresolver/impl/mapping/MapEntries.java
@@ -142,7 +142,7 @@
private boolean updateBloomFilterFile = false;
- private StringInterpolationProvider stringInterpolationProvider;
+ private final StringInterpolationProvider stringInterpolationProvider;
@SuppressWarnings({ "unchecked" })
public MapEntries(final MapConfigurationProvider factory, final BundleContext bundleContext, final EventAdmin eventAdmin, final StringInterpolationProvider stringInterpolationProvider)
diff --git a/src/main/java/org/apache/sling/resourceresolver/impl/mapping/StringInterpolationProviderConfiguration.java b/src/main/java/org/apache/sling/resourceresolver/impl/mapping/StringInterpolationProviderConfiguration.java
index 3d2f81a..56fc598 100644
--- a/src/main/java/org/apache/sling/resourceresolver/impl/mapping/StringInterpolationProviderConfiguration.java
+++ b/src/main/java/org/apache/sling/resourceresolver/impl/mapping/StringInterpolationProviderConfiguration.java
@@ -23,15 +23,15 @@
@ObjectClassDefinition(
name = "Apache Sling String Interpolation Provider",
- description = "Configures the String Interpolation Provider and the location of its key/value pairs"
+ description = "Configures the String Interpolation Provider key/value pairs"
)
public @interface StringInterpolationProviderConfiguration {
@AttributeDefinition(
name = "Placeholder Values",
description = "A list of key / value pairs separated by a equal (=) sign. " +
- "The key is not permitted to contain a '=' sign and the first occurrence of '=' " +
- "separates the key from the value. If no '=' is found the entire key / value pair " +
- "is dropped.")
+ "The key is not permitted to contain a '=' sign as the first occurrence of '=' " +
+ "separates the key from the value. If no '=' is found the entry " +
+ "is ignored")
String[] placeHolderKeyValuePairs() default {"phv.default.host.name=localhost"};
}
diff --git a/src/main/java/org/apache/sling/resourceresolver/impl/mapping/StringInterpolationProviderImpl.java b/src/main/java/org/apache/sling/resourceresolver/impl/mapping/StringInterpolationProviderImpl.java
index 87a8ebb..1c91a8d 100644
--- a/src/main/java/org/apache/sling/resourceresolver/impl/mapping/StringInterpolationProviderImpl.java
+++ b/src/main/java/org/apache/sling/resourceresolver/impl/mapping/StringInterpolationProviderImpl.java
@@ -31,7 +31,7 @@
import java.util.Map;
@Designate(ocd = StringInterpolationProviderConfiguration.class)
-@Component(name = "org.apache.sling.resourceresolver.impl.mapping.StringInterpolationProviderImpl")
+@Component
public class StringInterpolationProviderImpl
implements StringInterpolationProvider
{
@@ -39,9 +39,10 @@
private static final String TYPE_PROP = "prop";
+ private static final String TYPE_CONFIG = "config";
+
private static final String DIRECTIVE_DEFAULT = "default";
- /** Logger. */
private final Logger logger = LoggerFactory.getLogger(this.getClass());
private Map<String, String> placeholderEntries = new HashMap<>();
@@ -57,8 +58,7 @@
this.context = bundleContext;
String[] valueMap = config.placeHolderKeyValuePairs();
- // Clear out any existing values
- placeholderEntries.clear();
+ Map<String, String> newMap = new HashMap<>();
for(String line: valueMap) {
// Ignore no or empty lines
if(line != null && !line.isEmpty()) {
@@ -70,11 +70,12 @@
} else if (index > line.length() - 2) {
logger.warn("Placeholder Entry does not contain a value: '{}' -> ignored", line);
} else {
- placeholderEntries.put(line.substring(0, index), line.substring(index + 1));
+ newMap.put(line.substring(0, index), line.substring(index + 1));
}
}
}
}
+ this.placeholderEntries = newMap;
}
/**
@@ -109,7 +110,7 @@
v = getVariableFromEnvironment(name);
} else if (TYPE_PROP.equals(type)) {
v = getVariableFromProperty(name);
- } else {
+ } else if(TYPE_CONFIG.equals(type)){
v = getVariableFromBundleConfiguration(name);
}
if (v == null) {
diff --git a/src/test/java/org/apache/sling/resourceresolver/impl/EtcMappingResourceResolverTest.java b/src/test/java/org/apache/sling/resourceresolver/impl/EtcMappingResourceResolverTest.java
index c021c99..ca2d6a6 100644
--- a/src/test/java/org/apache/sling/resourceresolver/impl/EtcMappingResourceResolverTest.java
+++ b/src/test/java/org/apache/sling/resourceresolver/impl/EtcMappingResourceResolverTest.java
@@ -285,7 +285,7 @@
@Test
public void simple_node_string_interpolation() throws Exception {
- buildResource("$[siv.one]", http, resourceResolver, resourceProvider,PROP_REDIRECT_EXTERNAL, "/content/simple-node");
+ buildResource("$[config:siv.one]", http, resourceResolver, resourceProvider,PROP_REDIRECT_EXTERNAL, "/content/simple-node");
setupStringInterpolationProvider(stringInterpolationProvider, stringInterpolationProviderConfiguration, new String[] {"siv.one=test-simple-node.80"});
refreshMapEntries("/etc/map", true);
@@ -304,7 +304,7 @@
@Test
public void simple_match_string_interpolation() throws Exception {
buildResource("test-node", http, resourceResolver, resourceProvider,
- PROP_REG_EXP, "$[siv.one]/",
+ PROP_REG_EXP, "$[config:siv.one]/",
PROP_REDIRECT_EXTERNAL, "/content/simple-match/"
);
setupStringInterpolationProvider(stringInterpolationProvider, stringInterpolationProviderConfiguration, new String[] {"siv.one=test-simple-match.80"});
diff --git a/src/test/java/org/apache/sling/resourceresolver/impl/MockedResourceResolverImplTest.java b/src/test/java/org/apache/sling/resourceresolver/impl/MockedResourceResolverImplTest.java
index c0b4b69..b960a82 100644
--- a/src/test/java/org/apache/sling/resourceresolver/impl/MockedResourceResolverImplTest.java
+++ b/src/test/java/org/apache/sling/resourceresolver/impl/MockedResourceResolverImplTest.java
@@ -428,17 +428,6 @@
return resource;
}
-
-// /**
-// * extract the name from a path.
-// * @param fullpath
-// * @return
-// */
-// private String getName(String fullpath) {
-// int n = fullpath.lastIndexOf("/");
-// return fullpath.substring(n+1);
-// }
-
/**
* Test getting a resolver.
* @throws LoginException
diff --git a/src/test/java/org/apache/sling/resourceresolver/impl/mapping/StringInterpolationMapEntriesTest.java b/src/test/java/org/apache/sling/resourceresolver/impl/mapping/StringInterpolationMapEntriesTest.java
index 1a6a299..9f04b6f 100644
--- a/src/test/java/org/apache/sling/resourceresolver/impl/mapping/StringInterpolationMapEntriesTest.java
+++ b/src/test/java/org/apache/sling/resourceresolver/impl/mapping/StringInterpolationMapEntriesTest.java
@@ -32,7 +32,7 @@
@Test
public void simple_node_string_interpolation() throws Exception {
// To avoid side effects the String Interpolation uses its own Resource Resolver
- Resource sivOne = setupEtcMapResource("$[siv.one]", http,PROP_REDIRECT_EXTERNAL, "/content/simple-node");
+ Resource sivOne = setupEtcMapResource("$[config:siv.one]", http,PROP_REDIRECT_EXTERNAL, "/content/simple-node");
setupStringInterpolationProvider(stringInterpolationProvider, stringInterpolationProviderConfiguration, new String[] {"siv.one=test-simple-node"});
mapEntries.doInit();
@@ -44,7 +44,7 @@
public void simple_match_string_interpolation() throws Exception {
// To avoid side effects the String Interpolation uses its own Resource Resolver
Resource sivOne = setupEtcMapResource("test-node", http,
- PROP_REG_EXP, "$[siv.one]/",
+ PROP_REG_EXP, "$[config:siv.one]/",
PROP_REDIRECT_EXTERNAL, "/content/simple-match/"
);
setupStringInterpolationProvider(stringInterpolationProvider, stringInterpolationProviderConfiguration, new String[] {"siv.one=test-simple-match"});
diff --git a/src/test/java/org/apache/sling/resourceresolver/impl/mapping/StringInterpolationProviderImplTest.java b/src/test/java/org/apache/sling/resourceresolver/impl/mapping/StringInterpolationProviderImplTest.java
index 5f0d6db..60fe5e9 100644
--- a/src/test/java/org/apache/sling/resourceresolver/impl/mapping/StringInterpolationProviderImplTest.java
+++ b/src/test/java/org/apache/sling/resourceresolver/impl/mapping/StringInterpolationProviderImplTest.java
@@ -49,7 +49,7 @@
public void test_interpolator_simple() {
Map<String,String> values = new HashMap<>();
values.put("one", "two");
- String substitute = interpolate("$[one]", values);
+ String substitute = interpolate("$[config:one]", values);
assertEquals("Wrong Replacement", "two", substitute);
}
@@ -57,7 +57,7 @@
public void test_interpolator_with_type() {
Map<String,String> values = new HashMap<>();
values.put("one", "two");
- String substitute = interpolate("$[value:one]", values);
+ String substitute = interpolate("$[config:one]", values);
assertEquals("Wrong Replacement (with type)", "two", substitute);
}
@@ -65,15 +65,15 @@
public void test_interpolator_no_match() {
Map<String,String> values = new HashMap<>();
values.put("one", "two");
- String substitute = interpolate("$[two]", values);
- assertEquals("Should not been replaced", "$[two]", substitute);
+ String substitute = interpolate("$[config:two]", values);
+ assertEquals("Should not been replaced", "$[config:two]", substitute);
}
@Test
public void test_interpolator_no_match_with_default() {
Map<String,String> values = new HashMap<>();
values.put("one", "two");
- String substitute = interpolate("$[two;default=three]", values);
+ String substitute = interpolate("$[config:two;default=three]", values);
assertEquals("Should have been default for no match", "three", substitute);
}
@@ -81,7 +81,7 @@
public void test_interpolator_full_with_match() {
Map<String,String> values = new HashMap<>();
values.put("one", "two");
- String substitute = interpolate("$[value:one;default=three]", values);
+ String substitute = interpolate("$[config:one;default=three]", values);
assertEquals("Wrong Replacement", "two", substitute);
}
@@ -89,7 +89,7 @@
public void test_interpolator_full_with_default() {
Map<String,String> values = new HashMap<>();
values.put("one", "two");
- String substitute = interpolate("$[value:two;default=three]", values);
+ String substitute = interpolate("$[config:two;default=three]", values);
assertEquals("Should have been default for no match", "three", substitute);
}
@@ -113,7 +113,7 @@
StringInterpolationProviderImpl placeholderProvider = new StringInterpolationProviderImpl();
placeholderProvider.activate(bundleContext, stringInterpolationProviderConfiguration);
- String line = "$[one]";
+ String line = "$[config:one]";
String substituted = placeholderProvider.substitute(line);
assertEquals("Wrong resolved line", "two", substituted);
}
@@ -126,7 +126,7 @@
StringInterpolationProviderImpl placeholderProvider = new StringInterpolationProviderImpl();
placeholderProvider.activate(bundleContext, stringInterpolationProviderConfiguration);
- String line = "Here is $[one], too";
+ String line = "Here is $[config:one], too";
String substituted = placeholderProvider.substitute(line);
assertEquals("Wrong resolved line", "Here is two, too", substituted);
}
@@ -139,7 +139,7 @@
StringInterpolationProviderImpl placeholderProvider = new StringInterpolationProviderImpl();
placeholderProvider.activate(bundleContext, stringInterpolationProviderConfiguration);
- String line = "$[one] with another $[three]";
+ String line = "$[config:one] with another $[config:three]";
String substituted = placeholderProvider.substitute(line);
assertEquals("Wrong resolved line", "two with another four", substituted);
}
@@ -153,7 +153,7 @@
StringInterpolationProviderImpl placeholderProvider = new StringInterpolationProviderImpl();
placeholderProvider.activate(bundleContext, stringInterpolationProviderConfiguration);
- String line = "Here comes $[one] with another $[three] equals $[five], horray!";
+ String line = "Here comes $[config:one] with another $[config:three] equals $[config:five], horray!";
String substituted = placeholderProvider.substitute(line);
assertEquals("Wrong resolved line", "Here comes two with another four equals six, horray!", substituted);
}
@@ -181,9 +181,9 @@
StringInterpolationProviderImpl placeholderProvider = new StringInterpolationProviderImpl();
placeholderProvider.activate(bundleContext, stringInterpolationProviderConfiguration);
- String line = "Here comes $[unkown] placeholders!";
+ String line = "Here comes $[config:unkown] placeholders!";
String substituted = placeholderProvider.substitute(line);
- assertEquals("Wrong resolved line", "Here comes $[unkown] placeholders!", substituted);
+ assertEquals("Wrong resolved line", "Here comes $[config:unkown] placeholders!", substituted);
}
@Test
@@ -195,7 +195,7 @@
StringInterpolationProviderImpl placeholderProvider = new StringInterpolationProviderImpl();
placeholderProvider.activate(bundleContext, stringInterpolationProviderConfiguration);
- String line = "$[siv.one]/";
+ String line = "$[config:siv.one]/";
String substituted = placeholderProvider.substitute(line);
assertEquals("Wrong resolved line", "test-value/", substituted);
}
@@ -209,9 +209,9 @@
StringInterpolationProviderImpl placeholderProvider = new StringInterpolationProviderImpl();
placeholderProvider.activate(bundleContext, stringInterpolationProviderConfiguration);
- String line = "\\$[one]=$[one]";
+ String line = "\\$[config:one]=$[config:one]";
String substituted = placeholderProvider.substitute(line);
- assertEquals("Wrong resolved line", "$[one]=two", substituted);
+ assertEquals("Wrong resolved line", "$[config:one]=two", substituted);
}
@Test
@@ -223,7 +223,7 @@
StringInterpolationProviderImpl placeholderProvider = new StringInterpolationProviderImpl();
placeholderProvider.activate(bundleContext, stringInterpolationProviderConfiguration);
- String line = "$[$[one]]";
+ String line = "$[config:$[config:one]]";
String substituted = placeholderProvider.substitute(line);
assertEquals("Wrong resolved line", "three", substituted);
}
@@ -237,7 +237,7 @@
StringInterpolationProviderImpl placeholderProvider = new StringInterpolationProviderImpl();
placeholderProvider.activate(bundleContext, stringInterpolationProviderConfiguration);
- String line = "$[one$[one]]";
+ String line = "$[config:one$[config:one]]";
String substituted = placeholderProvider.substitute(line);
assertEquals("Wrong resolved line", "three", substituted);
}
@@ -251,9 +251,9 @@
StringInterpolationProviderImpl placeholderProvider = new StringInterpolationProviderImpl();
placeholderProvider.activate(bundleContext, stringInterpolationProviderConfiguration);
- String line = "$[one]$[two]";
+ String line = "$[config:one]$[config:two]";
String substituted = placeholderProvider.substitute(line);
- assertEquals("Wrong resolved line", "two$[two]", substituted);
+ assertEquals("Wrong resolved line", "two$[config:two]", substituted);
}
@Test
@@ -265,9 +265,9 @@
StringInterpolationProviderImpl placeholderProvider = new StringInterpolationProviderImpl();
placeholderProvider.activate(bundleContext, stringInterpolationProviderConfiguration);
- String line = "$[one]$[two]";
+ String line = "$[config:one]$[config:two]";
String substituted = placeholderProvider.substitute(line);
- assertEquals("Wrong resolved line", "two$[two]", substituted);
+ assertEquals("Wrong resolved line", "two$[config:two]", substituted);
}
@Test
@@ -279,7 +279,7 @@
StringInterpolationProviderImpl placeholderProvider = new StringInterpolationProviderImpl();
placeholderProvider.activate(bundleContext, stringInterpolationProviderConfiguration);
- String line = "$[one]-$[two]";
+ String line = "$[config:one]-$[config:two]";
String substituted = placeholderProvider.substitute(line);
assertEquals("Wrong resolved line", "two-four", substituted);
}
@@ -293,7 +293,7 @@
StringInterpolationProviderImpl placeholderProvider = new StringInterpolationProviderImpl();
placeholderProvider.activate(bundleContext, stringInterpolationProviderConfiguration);
- String line = "$[one]-$[two]";
+ String line = "$[config:one]-$[config:two]";
String substituted = placeholderProvider.substitute(line);
assertEquals("Wrong resolved line", "two-four", substituted);
}
@@ -302,7 +302,7 @@
public void test_no_configuration() {
StringInterpolationProviderImpl placeholderProvider = new StringInterpolationProviderImpl();
- String line = "$[one]$[two]";
+ String line = "$[config:one]$[config:two]";
String substituted = placeholderProvider.substitute(line);
assertEquals("Wrong resolved line", line, substituted);
}
@@ -320,7 +320,7 @@
);
placeholderProvider.modified(bundleContext, stringInterpolationProviderConfiguration);
- String line = "$[one]-$[two]";
+ String line = "$[config:one]-$[config:two]";
String substituted = placeholderProvider.substitute(line);
assertEquals("Wrong resolved line", "two-three", substituted);
}
@@ -334,7 +334,7 @@
StringInterpolationProviderImpl placeholderProvider = new StringInterpolationProviderImpl();
placeholderProvider.activate(bundleContext, stringInterpolationProviderConfiguration);
- String line = "$[one]-$[two]";
+ String line = "$[config:one]-$[config:two]";
String substituted = placeholderProvider.substitute(line);
assertEquals("Wrong resolved line", "two-four", substituted);
placeholderProvider.deactivate(bundleContext);