Author: cziegeler Date: Tue Sep 22 09:00:58 2009 New Revision: 817554 URL: http://svn.apache.org/viewvc?rev=817554&view=rev Log: SLING-1112 : ValueMap doesn't allow "deep property fetching" anymore
Modified: sling/trunk/bundles/jcr/resource/src/main/java/org/apache/sling/jcr/resource/internal/JcrModifiablePropertyMap.java sling/trunk/bundles/jcr/resource/src/main/java/org/apache/sling/jcr/resource/internal/JcrPropertyMap.java sling/trunk/bundles/jcr/resource/src/test/java/org/apache/sling/jcr/resource/internal/JcrPropertyMapTest.java Modified: sling/trunk/bundles/jcr/resource/src/main/java/org/apache/sling/jcr/resource/internal/JcrModifiablePropertyMap.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/resource/src/main/java/org/apache/sling/jcr/resource/internal/JcrModifiablePropertyMap.java?rev=817554&r1=817553&r2=817554&view=diff ============================================================================== --- sling/trunk/bundles/jcr/resource/src/main/java/org/apache/sling/jcr/resource/internal/JcrModifiablePropertyMap.java (original) +++ sling/trunk/bundles/jcr/resource/src/main/java/org/apache/sling/jcr/resource/internal/JcrModifiablePropertyMap.java Tue Sep 22 09:00:58 2009 @@ -46,19 +46,6 @@ } // ---------- Map - - /** - * @see java.util.Map#get(java.lang.Object) - */ - public Object get(Object key) { - CacheEntry entry = cache.get(key); - if (entry == null && !this.fullyRead ) { - entry = read((String) key); - } - - return entry == null ? null : entry.defaultValue; - } - /** * @see java.util.Map#clear() */ @@ -77,6 +64,9 @@ * @see java.util.Map#put(java.lang.Object, java.lang.Object) */ public Object put(String key, Object value) { + if ( key == null || key.indexOf('/') != -1 ) { + throw new IllegalArgumentException("Invalud key: " + key); + } readFully(); final Object oldValue = this.get(key); try { @@ -144,7 +134,7 @@ try { final Node node = getNode(); for(final String key : this.changedProperties) { - final String name = ISO9075.encode(key); + final String name = ISO9075.encodePath(key); if ( cache.containsKey(key) ) { final CacheEntry entry = cache.get(key); if ( entry.isMulti ) { Modified: sling/trunk/bundles/jcr/resource/src/main/java/org/apache/sling/jcr/resource/internal/JcrPropertyMap.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/resource/src/main/java/org/apache/sling/jcr/resource/internal/JcrPropertyMap.java?rev=817554&r1=817553&r2=817554&view=diff ============================================================================== --- sling/trunk/bundles/jcr/resource/src/main/java/org/apache/sling/jcr/resource/internal/JcrPropertyMap.java (original) +++ sling/trunk/bundles/jcr/resource/src/main/java/org/apache/sling/jcr/resource/internal/JcrPropertyMap.java Tue Sep 22 09:00:58 2009 @@ -212,12 +212,13 @@ CacheEntry read(final String key) { // if the node has been completely read, we need not check - // again, as we certainly will not find the key - if (fullyRead) { + // again if the key does not point to a sub node + if (fullyRead && key.indexOf('/') == -1 ) { + // except if the key contains return null; } - final String name = ISO9075.encode(key); + final String name = ISO9075.encodePath(key); try { if (node.hasProperty(name)) { final Property prop = node.getProperty(name); Modified: sling/trunk/bundles/jcr/resource/src/test/java/org/apache/sling/jcr/resource/internal/JcrPropertyMapTest.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/resource/src/test/java/org/apache/sling/jcr/resource/internal/JcrPropertyMapTest.java?rev=817554&r1=817553&r2=817554&view=diff ============================================================================== --- sling/trunk/bundles/jcr/resource/src/test/java/org/apache/sling/jcr/resource/internal/JcrPropertyMapTest.java (original) +++ sling/trunk/bundles/jcr/resource/src/test/java/org/apache/sling/jcr/resource/internal/JcrPropertyMapTest.java Tue Sep 22 09:00:58 2009 @@ -234,17 +234,19 @@ return createPropertyMap(node); } + private static final String TEST_PATH = "a<a"; + public void testNames() throws Exception { - this.rootNode.setProperty(ISO9075.encode("a/a"), "value"); + this.rootNode.setProperty(ISO9075.encodePath(TEST_PATH), "value"); final ValueMap vm = this.createPropertyMap(this.rootNode); - assertEquals("value", vm.get("a/a")); + assertEquals("value", vm.get(TEST_PATH)); } public void testIerators() throws Exception { - this.rootNode.setProperty(ISO9075.encode("a/a"), "value"); + this.rootNode.setProperty(ISO9075.encodePath(TEST_PATH), "value"); final ValueMap vm = this.createPropertyMap(this.rootNode); - assertTrue(vm.containsKey("a/a")); - search(vm.keySet().iterator(), "a/a"); + assertTrue(vm.containsKey(TEST_PATH)); + search(vm.keySet().iterator(), TEST_PATH); search(vm.values().iterator(), "value"); }