This is an automated email from the ASF dual-hosted git repository. rombert pushed a commit to annotated tag org.apache.sling.resourcemerger-1.0.0 in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-resourcemerger.git
commit 64d19113e7b58fc206246637e8f985d9e99d699e Author: Carsten Ziegeler <cziege...@apache.org> AuthorDate: Thu Jan 30 09:55:05 2014 +0000 SLING-2986 : Fix listChildren and add test case git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/contrib/extensions/resourcemerger@1562759 13f79535-47bb-0310-9956-ffa450edef68 --- pom.xml | 11 +++ .../impl/MergedResourceProvider.java | 32 +++++---- .../impl/MergedResourceProviderTest.java | 79 ++++++++++++++++++++++ 3 files changed, 107 insertions(+), 15 deletions(-) diff --git a/pom.xml b/pom.xml index aeceef7..af864d9 100644 --- a/pom.xml +++ b/pom.xml @@ -83,5 +83,16 @@ <version>2.2.0</version> <scope>provided</scope> </dependency> + <!-- Testing --> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + </dependency> + <dependency> + <groupId>org.apache.sling</groupId> + <artifactId>org.apache.sling.testing.resourceresolver-mock</artifactId> + <version>0.1.0</version> + <scope>test</scope> + </dependency> </dependencies> </project> diff --git a/src/main/java/org/apache/sling/resourcemerger/impl/MergedResourceProvider.java b/src/main/java/org/apache/sling/resourcemerger/impl/MergedResourceProvider.java index 53d0243..5ce1d25 100644 --- a/src/main/java/org/apache/sling/resourcemerger/impl/MergedResourceProvider.java +++ b/src/main/java/org/apache/sling/resourcemerger/impl/MergedResourceProvider.java @@ -117,22 +117,24 @@ public class MergedResourceProvider implements ResourceProvider { for (final String basePath : resolver.getSearchPath()) { final Resource baseResource = resolver.getResource(basePath + "/" + relativePath); if ( baseResource != null ) { - final String rsrcName = baseResource.getName(); - if ( !names.contains(rsrcName) ) { - names.add(rsrcName); - } - // Check if children need reordering - int orderBeforeIndex = -1; - final ValueMap vm = ResourceUtil.getValueMap(baseResource); - final String orderBefore = vm.get(MergedResourceConstants.PN_ORDER_BEFORE, String.class); - if (orderBefore != null && !orderBefore.equals(rsrcName)) { - // search entry - orderBeforeIndex = names.indexOf(orderBefore); - } + for(final Resource child : baseResource.getChildren()) { + final String rsrcName = child.getName(); + if ( !names.contains(rsrcName) ) { + names.add(rsrcName); + } + // Check if children need reordering + int orderBeforeIndex = -1; + final ValueMap vm = ResourceUtil.getValueMap(child); + final String orderBefore = vm.get(MergedResourceConstants.PN_ORDER_BEFORE, String.class); + if (orderBefore != null && !orderBefore.equals(rsrcName)) { + // search entry + orderBeforeIndex = names.indexOf(orderBefore); + } - if (orderBeforeIndex > -1) { - names.add(orderBeforeIndex, rsrcName); - names.remove(names.size() - 1); + if (orderBeforeIndex > -1) { + names.add(orderBeforeIndex, rsrcName); + names.remove(names.size() - 1); + } } } } diff --git a/src/test/java/org/apache/sling/resourcemerger/impl/MergedResourceProviderTest.java b/src/test/java/org/apache/sling/resourcemerger/impl/MergedResourceProviderTest.java new file mode 100644 index 0000000..bde3a55 --- /dev/null +++ b/src/test/java/org/apache/sling/resourcemerger/impl/MergedResourceProviderTest.java @@ -0,0 +1,79 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.sling.resourcemerger.impl; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +import org.apache.sling.api.resource.Resource; +import org.apache.sling.api.resource.ResourceResolver; +import org.apache.sling.api.resource.ResourceResolverFactory; +import org.apache.sling.testing.resourceresolver.MockResourceResolverFactory; +import org.junit.Before; +import org.junit.Test; + +public class MergedResourceProviderTest { + + private ResourceResolver resolver; + + private MergedResourceProvider provider; + + @Before public void setup() throws Exception { + final ResourceResolverFactory factory = new MockResourceResolverFactory(); + this.resolver = factory.getAdministrativeResourceResolver(null); + final Resource root = this.resolver.getResource("/"); + final Resource apps = this.resolver.create(root, "apps", null); + final Resource libs = this.resolver.create(root, "libs", null); + + final Resource appsA = this.resolver.create(apps, "a", null); + final Resource libsA = this.resolver.create(libs, "a", null); + + this.resolver.create(appsA, "1", null); + this.resolver.create(libsA, "1", null); + this.resolver.create(appsA, "2", null); + this.resolver.create(libsA, "2", null); + this.resolver.create(appsA, "X", null); + this.resolver.create(libsA, "Y", null); + + this.resolver.commit(); + + this.provider = new MergedResourceProvider("/merged"); + } + + @Test public void testListChildren() { + final Resource rsrcA = this.provider.getResource(this.resolver, "/merged/a"); + assertNotNull(rsrcA); + final Iterator<Resource> i = this.provider.listChildren(rsrcA); + assertNotNull(i); + final List<String> names = new ArrayList<String>(); + while ( i.hasNext() ) { + names.add(i.next().getName()); + } + assertEquals(4, names.size()); + assertTrue(names.contains("1")); + assertTrue(names.contains("2")); + assertTrue(names.contains("Y")); + assertTrue(names.contains("X")); + } +} -- To stop receiving notification emails like this one, please contact "commits@sling.apache.org" <commits@sling.apache.org>.