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 2012/07/19 13:41:49 UTC
svn commit: r1363304 - in /sling/trunk/bundles:
api/src/main/java/org/apache/sling/api/resource/
resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/tree/
Author: cziegeler
Date: Thu Jul 19 11:41:48 2012
New Revision: 1363304
URL: http://svn.apache.org/viewvc?rev=1363304&view=rev
Log:
SLING-2530 : Implement CRUD based on resources
Modified:
sling/trunk/bundles/api/src/main/java/org/apache/sling/api/resource/ResourceProvider.java
sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/tree/ProviderHandler.java
sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/tree/ResourceProviderEntry.java
Modified: sling/trunk/bundles/api/src/main/java/org/apache/sling/api/resource/ResourceProvider.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/api/src/main/java/org/apache/sling/api/resource/ResourceProvider.java?rev=1363304&r1=1363303&r2=1363304&view=diff
==============================================================================
--- sling/trunk/bundles/api/src/main/java/org/apache/sling/api/resource/ResourceProvider.java (original)
+++ sling/trunk/bundles/api/src/main/java/org/apache/sling/api/resource/ResourceProvider.java Thu Jul 19 11:41:48 2012
@@ -54,6 +54,17 @@ public interface ResourceProvider {
String ROOTS = "provider.roots";
/**
+ * The name of the service registration property containing the a boolean
+ * flag whether this provider owns the tree registered by the roots. The
+ * default for this value is <code>false</code>. If a provider owns a root
+ * no other providers are asked for resources under this root if this
+ * provider does not have a resource. (value is "provider.ownsRoots").
+ *
+ * @since 2.2
+ */
+ String OWNS_ROOTS = "provider.ownsRoots";
+
+ /**
* The resource type be set on resources returned by the
* {@link #listChildren(Resource)} method to enable traversing the
* resource
Modified: sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/tree/ProviderHandler.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/tree/ProviderHandler.java?rev=1363304&r1=1363303&r2=1363304&view=diff
==============================================================================
--- sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/tree/ProviderHandler.java (original)
+++ sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/tree/ProviderHandler.java Thu Jul 19 11:41:48 2012
@@ -46,6 +46,9 @@ public abstract class ProviderHandler im
/** Configured roots. */
private final String[] roots;
+ /** Owns roots? */
+ private final boolean ownsRoots;
+
/**
* Create a new handler
*/
@@ -75,6 +78,7 @@ public abstract class ProviderHandler im
Collections.sort(configuredRoots);
this.roots = configuredRoots.toArray(new String[configuredRoots.size()]);
}
+ this.ownsRoots = PropertiesUtil.toBoolean(properties.get(ResourceProvider.OWNS_ROOTS), false);
}
/**
@@ -92,6 +96,13 @@ public abstract class ProviderHandler im
}
/**
+ * Does this provider own the roots?
+ */
+ public boolean ownsRoots() {
+ return this.ownsRoots;
+ }
+
+ /**
* Return a sorted array of roots for this provider. If no roots are configured,
* this will return <code>null</code>
* @return The array of roots or <code>null</code>
@@ -142,6 +153,9 @@ public abstract class ProviderHandler im
*/
public abstract Iterator<Resource> listChildren(final ResourceResolverContext ctx, final Resource parent);
+ /**
+ * Return the resource provider.
+ */
public abstract ResourceProvider getResourceProvider(final ResourceResolverContext ctx);
/**
Modified: sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/tree/ResourceProviderEntry.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/tree/ResourceProviderEntry.java?rev=1363304&r1=1363303&r2=1363304&view=diff
==============================================================================
--- sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/tree/ResourceProviderEntry.java (original)
+++ sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/tree/ResourceProviderEntry.java Thu Jul 19 11:41:48 2012
@@ -287,8 +287,11 @@ public class ResourceProviderEntry imple
LOGGER.debug("Resolved Full {} using {} from {} ", new Object[] { fullPath, rp, Arrays.toString(rps) });
return resource;
}
+ if ( rp.ownsRoots() ) {
+ LOGGER.debug("Resource null {} ", fullPath);
+ return null;
+ }
}
- // TODO stop handling if provider claims subtree!
}
// resolve against this one
@@ -343,8 +346,10 @@ public class ResourceProviderEntry imple
if ( provider instanceof ModifyingResourceProvider ) {
return (ModifyingResourceProvider) provider;
}
+ if ( rp.ownsRoots() ) {
+ throw new UnsupportedOperationException();
+ }
}
- // TODO stop handling if provider claims subtree!
}
throw new UnsupportedOperationException();
}