You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by cz...@apache.org on 2016/02/06 13:53:45 UTC
svn commit: r1728834 -
/sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/ResourceResolverControl.java
Author: cziegeler
Date: Sat Feb 6 12:53:45 2016
New Revision: 1728834
URL: http://svn.apache.org/viewvc?rev=1728834&view=rev
Log:
SLING-5492 : ResourceResolver#getParent might ask wrong resource provider
Modified:
sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/ResourceResolverControl.java
Modified: sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/ResourceResolverControl.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/ResourceResolverControl.java?rev=1728834&r1=1728833&r2=1728834&view=diff
==============================================================================
--- sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/ResourceResolverControl.java (original)
+++ sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/ResourceResolverControl.java Sat Feb 6 12:53:45 2016
@@ -160,20 +160,26 @@ public class ResourceResolverControl {
* {@link #getResource(String, Resource, Map, boolean)} for more details
*/
public Resource getParent(final ResourceResolverContext context, final Resource child) {
- final String path = child.getPath();
- final AuthenticatedResourceProvider provider = getBestMatchingProvider(context, path);
- if ( provider != null ) {
- final Resource parentCandidate = provider.getParent(child);
- if (parentCandidate != null) {
- return parentCandidate;
+ final String parentPath = ResourceUtil.getParent(child.getPath());
+ if ( parentPath != null ) {
+ final AuthenticatedResourceProvider childProvider = getBestMatchingProvider(context, child.getPath());
+ final AuthenticatedResourceProvider parentProvider = getBestMatchingProvider(context, parentPath);
+ if ( parentProvider != null ) {
+ final Resource parentCandidate;
+ if ( childProvider == parentProvider ) {
+ parentCandidate = parentProvider.getParent(child);
+ } else {
+ parentCandidate = parentProvider.getResource(parentPath, null, null);
+ }
+ if (parentCandidate != null) {
+ return parentCandidate;
+ }
}
- }
- final String parentPath = ResourceUtil.getParent(path);
- if (parentPath != null && isIntermediatePath(parentPath)) {
- return new SyntheticResource(context.getResourceResolver(), parentPath, ResourceProvider.RESOURCE_TYPE_SYNTHETIC);
+ if (isIntermediatePath(parentPath)) {
+ return new SyntheticResource(context.getResourceResolver(), parentPath, ResourceProvider.RESOURCE_TYPE_SYNTHETIC);
+ }
}
-
return null;
}