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/12/20 21:02:16 UTC
svn commit: r1775354 - in /sling/trunk/bundles/api/src:
main/java/org/apache/sling/api/wrappers/ValueMapDecorator.java
test/java/org/apache/sling/api/wrappers/ValueMapDecoratorTest.java
Author: sseifert
Date: Tue Dec 20 21:02:16 2016
New Revision: 1775354
URL: http://svn.apache.org/viewvc?rev=1775354&view=rev
Log:
SLING-6421 ValueMapDecorator should use typed methods when decorating ValueMaps
Modified:
sling/trunk/bundles/api/src/main/java/org/apache/sling/api/wrappers/ValueMapDecorator.java
sling/trunk/bundles/api/src/test/java/org/apache/sling/api/wrappers/ValueMapDecoratorTest.java
Modified: sling/trunk/bundles/api/src/main/java/org/apache/sling/api/wrappers/ValueMapDecorator.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/api/src/main/java/org/apache/sling/api/wrappers/ValueMapDecorator.java?rev=1775354&r1=1775353&r2=1775354&view=diff
==============================================================================
--- sling/trunk/bundles/api/src/main/java/org/apache/sling/api/wrappers/ValueMapDecorator.java (original)
+++ sling/trunk/bundles/api/src/main/java/org/apache/sling/api/wrappers/ValueMapDecorator.java Tue Dec 20 21:02:16 2016
@@ -51,6 +51,10 @@ public class ValueMapDecorator implement
* {@inheritDoc}
*/
public <T> T get(String name, Class<T> type) {
+ if (base instanceof ValueMap) {
+ // shortcut if decorated map is ValueMap
+ return ((ValueMap)base).get(name, type);
+ }
return convert(get(name), type);
}
@@ -145,7 +149,11 @@ public class ValueMapDecorator implement
*/
@SuppressWarnings("unchecked")
public <T> T get(String name, T defaultValue) {
- if ( defaultValue == null ) {
+ if (base instanceof ValueMap) {
+ // shortcut if decorated map is ValueMap
+ return ((ValueMap)base).get(name, defaultValue);
+ }
+ if (defaultValue == null) {
return (T)get(name);
}
T value = get(name, (Class<T>) defaultValue.getClass());
Modified: sling/trunk/bundles/api/src/test/java/org/apache/sling/api/wrappers/ValueMapDecoratorTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/api/src/test/java/org/apache/sling/api/wrappers/ValueMapDecoratorTest.java?rev=1775354&r1=1775353&r2=1775354&view=diff
==============================================================================
--- sling/trunk/bundles/api/src/test/java/org/apache/sling/api/wrappers/ValueMapDecoratorTest.java (original)
+++ sling/trunk/bundles/api/src/test/java/org/apache/sling/api/wrappers/ValueMapDecoratorTest.java Tue Dec 20 21:02:16 2016
@@ -18,6 +18,10 @@
*/
package org.apache.sling.api.wrappers;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+
import java.util.HashMap;
import java.util.Map;
@@ -146,4 +150,17 @@ public class ValueMapDecoratorTest {
Assert.assertFalse("Two ValueMapDecorators based on maps with different entries should not be equal",
valueMap.equals(valueMap2));
}
+
+ @Test
+ public void testDelegateToValueMap() {
+ ValueMap original = mock(ValueMap.class);
+ ValueMap decorated = new ValueMapDecorator(original);
+
+ decorated.get("prop1", String.class);
+ verify(original, times(1)).get("prop1", String.class);
+
+ decorated.get("prop1", "defValue");
+ verify(original, times(1)).get("prop1", "defValue");
+ }
+
}