You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ro...@apache.org on 2017/11/07 09:59:46 UTC

[sling-org-apache-sling-resourceresolver] 16/47: SLING-2530 : Implement CRUD based on resources

This is an automated email from the ASF dual-hosted git repository.

rombert pushed a commit to annotated tag org.apache.sling.resourceresolver-1.0.0
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-resourceresolver.git

commit 84d0fb08d4e70e5910fefd43cb7aa44c6dec39be
Author: Carsten Ziegeler <cz...@apache.org>
AuthorDate: Wed Jul 25 15:57:05 2012 +0000

    SLING-2530 : Implement CRUD based on resources
    
    git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/bundles/resourceresolver@1365645 13f79535-47bb-0310-9956-ffa450edef68
---
 .../sling/resourceresolver/impl/ResourceResolverImpl.java   | 13 ++++++++++++-
 .../resourceresolver/impl/tree/ResourceProviderEntry.java   | 11 +++++++++--
 2 files changed, 21 insertions(+), 3 deletions(-)

diff --git a/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverImpl.java b/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverImpl.java
index b11a8c6..5064da7 100644
--- a/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverImpl.java
+++ b/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverImpl.java
@@ -1007,6 +1007,9 @@ public class ResourceResolverImpl extends SlingAdaptable implements ResourceReso
         final ModifyingResourceProvider mrp = this.factory.getRootProviderEntry().getModifyingProvider(this.context,
                         this,
                         path);
+        if ( mrp == null ) {
+            throw new UnsupportedOperationException("delete at '" + path + "'");
+        }
         mrp.delete(this, path);
     }
 
@@ -1019,10 +1022,18 @@ public class ResourceResolverImpl extends SlingAdaptable implements ResourceReso
         if ( name == null ) {
             throw new NullPointerException("name");
         }
-        final String path = parent.getPath() + '/' + name;
+        final String path;
+        if ( parent.getPath().equals("/") ) {
+            path = parent.getPath() + name;
+        } else {
+            path = parent.getPath() + "/" + name;
+        }
         final ModifyingResourceProvider mrp = this.factory.getRootProviderEntry().getModifyingProvider(this.context,
                         this,
                         path);
+        if ( mrp == null ) {
+            throw new UnsupportedOperationException("addChild '" + name + "' at " + parent.getPath());
+        }
         return mrp.create(this, path, properties);
     }
 
diff --git a/src/main/java/org/apache/sling/resourceresolver/impl/tree/ResourceProviderEntry.java b/src/main/java/org/apache/sling/resourceresolver/impl/tree/ResourceProviderEntry.java
index 39e8675..b030cd6 100644
--- a/src/main/java/org/apache/sling/resourceresolver/impl/tree/ResourceProviderEntry.java
+++ b/src/main/java/org/apache/sling/resourceresolver/impl/tree/ResourceProviderEntry.java
@@ -347,11 +347,18 @@ public class ResourceProviderEntry implements Comparable<ResourceProviderEntry>
                     return (ModifyingResourceProvider) provider;
                 }
                 if ( rp.ownsRoots() ) {
-                    throw new UnsupportedOperationException();
+                    return null;
                 }
             }
         }
-        throw new UnsupportedOperationException();
+        // try this one
+        for(final ProviderHandler rp : this.providers) {
+            final ResourceProvider provider = rp.getResourceProvider(ctx);
+            if ( provider instanceof ModifyingResourceProvider) {
+                return (ModifyingResourceProvider) provider;
+            }
+        }
+        return null;
     }
 
     private static final char SPLIT_SEP = '/';

-- 
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.