Seems to be my fault - the include for the Text class was missing. This should be fixed now.
Carsten Bertrand Delacretaz wrote: > Hi, > > The launchpad app and webapp modules don't work in the current trunk, > http://localhost:8888/ says: > > java.lang.NoClassDefFoundError: org/apache/jackrabbit/util/Text > at org.apache.jackrabbit.util.ISO9075.encodePath(ISO9075.java:118) > at > org.apache.sling.jcr.resource.internal.JcrPropertyMap.read(JcrPropertyMap.java:221) > at > org.apache.sling.jcr.resource.internal.JcrPropertyMap.get(JcrPropertyMap.java:97) > > which is probably caused by the changes below - I haven't investigated yet. > -Bertrand > > On Tue, Sep 22, 2009 at 11:00 AM, <[email protected]> wrote: >> 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"); >> } >> >> >> >> > -- Carsten Ziegeler [email protected]
