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>.

Reply via email to